V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
NewConn
V2EX  ›  Linux

求助:关于 Linux 下 Python3 启动 tomcat 的问题

  •  
  •   NewConn · 2021-04-08 17:29:18 +08:00 · 1842 次点击
    这是一个创建于 1359 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有一个 python 下停止和启动 tomcat 的需求
    使用 python 的如下方式启动 tomcat:
    1)os.popen('/path/tomcat/bin/startup.sh')
    2)subprocess.Popen('/path/tomcat/bin/startup.sh', stdout=subprocess.PIPE)
    3)os.system('/path/tomcat/bin/startup.sh')
    以上方式都无法启动 tomcat,初步判断是 python 执行 shell 脚本后,shell 关闭导致 startup.sh 被迫关闭。
    我得疑问是:
    1)shell 脚本 /path/tomcat/bin/startup.sh 也是通过启动后台进程启动的 tomcat,执行完后 shell 应该是可以备关闭的,在 Linux 下执行确实也是这样,但是目前看 python 执行 /path/tomcat/bin/startup.sh 后,tomcat 被关闭了
    2)具体 python 应该怎样启动 tomcat,Google 给出的都是以上 3 种方案,亲测无效
    10 条回复    2021-04-10 12:12:26 +08:00
    clino
        1
    clino  
       2021-04-08 17:31:53 +08:00
    为啥不用 supervisor 来管理 daemon?
    http://supervisord.org/
    ManjusakaL
        2
    ManjusakaL  
       2021-04-08 17:36:10 +08:00
    提问都不给报错的么?
    怎么个无法启动法?
    NewConn
        3
    NewConn  
    OP
       2021-04-08 17:43:37 +08:00
    @ManjusakaL python 执行启动脚本返回值是 0,结果也不报错,脚本执行结果就是启动 tomcat 后的打印的 CATALINA 、JAVA 、CLASSPATH 的环境变量,以及一行“Tomcat started.”,和 Linux 下正常启动 tomcat 提示一样
    ManjusakaL
        4
    ManjusakaL  
       2021-04-08 17:50:44 +08:00
    那就在脚本里打个断点,strace 一下 tomcat 进程看下为啥没起来呗
    ManjusakaL
        5
    ManjusakaL  
       2021-04-08 17:51:02 +08:00
    @NewConn 那就在 python 脚本里打个断点,strace 一下 tomcat 进程看下为啥没起来呗
    wuwukai007
        6
    wuwukai007  
       2021-04-08 19:08:05 +08:00 via Android
    加个 nohub ?
    lff0305
        8
    lff0305  
       2021-04-09 12:58:33 +08:00 via Android
    试试在 Python 里面执行 catalina.sh run

    这是在前台启动 tomcat 的命令
    NewConn
        9
    NewConn  
    OP
       2021-04-09 14:57:24 +08:00
    @clino
    @wuwukai007
    @lff0305
    首先感谢各位的解答
    1 )服务正常是 CI 平台通过 tomcat 的 Catalina.sh 启动的,使用 daemon 启动不利于 CI 统一管理,不过也可以作为一个备选方案
    2 ) catalina.sh start 的现象和 start.sh 是一致的
    3)nohup start.sh > nohup.out 2>&1 &是可以启动的,但是不知道有没有更好的方式
    julyclyde
        10
    julyclyde  
       2021-04-10 12:12:26 +08:00
    “怎么启动后台服务”可以说是 java 届几十年都没人愿意出面解决,但其他领域早已解决了无数遍的经典问题了
    建议托管给 systemd ; supervisord 也可以将就用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   908 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:17 · PVG 06:17 · LAX 14:17 · JFK 17:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.