从python脚本启动NGINX
出于测试目的,我需要经常从python脚本启动/停止nginx 当我这样做的时候从python脚本启动NGINX,python,nginx,subprocess,Python,Nginx,Subprocess,出于测试目的,我需要经常从python脚本启动/停止nginx 当我这样做的时候 from subprocess import Popen process = Popen(['/usr/sbin/nginx', '-c', '/etc/nginx/nginx.conf']) print process.pid # prints 21621 因此,process.pid等于某些pid 然而,当我查看ps ax | grep nginx输出时,pid是僵尸,然后消失。但是,有一个nginx主
from subprocess import Popen
process = Popen(['/usr/sbin/nginx', '-c', '/etc/nginx/nginx.conf'])
print process.pid # prints 21621
因此,process.pid
等于某些pid
然而,当我查看ps ax | grep nginx
输出时,pid是僵尸,然后消失。但是,有一个nginx主进程的pid比原始pid大1
21621 pts/0 Z+0:00[nginx]
21622 ? ss0:00nginx:masterprocess/usr/sbin/nginx-c/etc/nginx/nginx.conf
21623 ? S 0:00 nginx:工作进程
21624 ? S 0:00 nginx:工作进程
从python脚本启动nginx有什么特别的魔力吗?您可以使用
setsid
。使用此代码
process = Popen(['setsid', '/usr/sbin/nginx', '-c', '/etc/nginx/nginx.conf'])
mansetsid
了解更多信息如果您的conf文件上有守护进程
,那么它将在后台启动一个单独的进程。您可能希望关闭守护进程
,这样您就可以得到NGINX进程的实际PID,因为您自己在后台工作。@Joe,这里没有守护进程
。但是,有一个worker\u进程自动设置。这和它有什么关系吗?结果几乎一样:22542?Zs 0:00[nginx]
如何从python创建systemd
服务和start
或stop
它?systemd有一些特性使我无法使用它,比如它不能及时停止nginx,因为它有很多进程在运行。在某些负载模式下,它还可以进行深度交换
process = Popen(['setsid', '/usr/sbin/nginx', '-c', '/etc/nginx/nginx.conf'])