技术解析

求助:关于 Linux 下 Python3 启动 tomcat 的问题
0
2021-06-12 03:25:05
idczone
我有一个 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 种方案,亲测无效
为啥不用 supervisor 来管理 daemon?
http://supervisord.org/

提问都不给报错的么?
怎么个无法启动法?

python 执行启动脚本返回值是 0,结果也不报错,脚本执行结果就是启动 tomcat 后的打印的 CATALINA 、JAVA 、CLASSPATH 的环境变量,以及一行“Tomcat started.”,和 Linux 下正常启动 tomcat 提示一样

那就在脚本里打个断点,strace 一下 tomcat 进程看下为啥没起来呗

那就在 python 脚本里打个断点,strace 一下 tomcat 进程看下为啥没起来呗

加个 nohub ?

https://stackoverflow.com/questions/25845173/need-to-start-tomcat-automatically

试试在 Python 里面执行 catalina.sh run
这是在前台启动 tomcat 的命令




首先感谢各位的解答
1 )服务正常是 CI 平台通过 tomcat 的 Catalina.sh 启动的,使用 daemon 启动不利于 CI 统一管理,不过也可以作为一个备选方案
2 ) catalina.sh start 的现象和 start.sh 是一致的
3)nohup start.sh > nohup.out 2>&1 &是可以启动的,但是不知道有没有更好的方式

“怎么启动后台服务”可以说是 java 届几十年都没人愿意出面解决,但其他领域早已解决了无数遍的经典问题了
建议托管给 systemd ; supervisord 也可以将就用

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服