Python中supervisor守护的进程被kill后如何自动重启?

1.supervisord -c /usr/local/etc/supervisord.conf
[program:hello]
command=php /home/test.php
autostart=true
autorestart=true
2.ps -ef|grep php 是可以看到已经在执行了
3.kill -9 将 php /home/test.php 这个进程杀掉后,就必须我手动重启 supervisord 了

我的疑问:我记得以前可以直接 kill 掉之后,马上就会被 supervisor 重新拉起来,我这个怎么不能自己起来呢?


Python中supervisor守护的进程被kill后如何自动重启?

4 回复

看日志,
supervisorctl


supervisor本身就有自动重启机制,关键在于配置里的autorestart参数。如果进程被kill后没重启,检查你的配置文件。

这是典型的supervisor配置示例:

[program:your_app]
command=/path/to/your/app.py
directory=/path/to/working/dir
autorestart=true
startretries=3
stopsignal=TERM
stopwaitsecs=10

关键配置说明:

  • autorestart=true:进程退出时自动重启
  • startretries=3:启动失败重试次数
  • stopsignal=TERM:停止信号,确保supervisor能正常停止进程

如果配置正确但还不重启,检查:

  1. 进程是否被kill -9杀掉?supervisor无法捕获SIGKILL
  2. 查看supervisor日志:sudo tail -f /var/log/supervisor/supervisord.log
  3. 重新加载配置:sudo supervisorctl reread && sudo supervisorctl update

确保配置正确,supervisor会处理好重启。

配置里加上 auto_restart=true

无视我吧,没好好审题

回到顶部