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

2021-04-08 17:29:18 +08:00
 NewConn
我有一个 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 种方案,亲测无效
1619 次点击
所在节点    Linux
10 条回复
clino
2021-04-08 17:31:53 +08:00
为啥不用 supervisor 来管理 daemon?
http://supervisord.org/
ManjusakaL
2021-04-08 17:36:10 +08:00
提问都不给报错的么?
怎么个无法启动法?
NewConn
2021-04-08 17:43:37 +08:00
@ManjusakaL python 执行启动脚本返回值是 0,结果也不报错,脚本执行结果就是启动 tomcat 后的打印的 CATALINA 、JAVA 、CLASSPATH 的环境变量,以及一行“Tomcat started.”,和 Linux 下正常启动 tomcat 提示一样
ManjusakaL
2021-04-08 17:50:44 +08:00
那就在脚本里打个断点,strace 一下 tomcat 进程看下为啥没起来呗
ManjusakaL
2021-04-08 17:51:02 +08:00
@NewConn 那就在 python 脚本里打个断点,strace 一下 tomcat 进程看下为啥没起来呗
wuwukai007
2021-04-08 19:08:05 +08:00
加个 nohub ?
gugugagadun
2021-04-09 08:39:57 +08:00
lff0305
2021-04-09 12:58:33 +08:00
试试在 Python 里面执行 catalina.sh run

这是在前台启动 tomcat 的命令
NewConn
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
2021-04-10 12:12:26 +08:00
“怎么启动后台服务”可以说是 java 届几十年都没人愿意出面解决,但其他领域早已解决了无数遍的经典问题了
建议托管给 systemd ; supervisord 也可以将就用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/769130

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX