linux怎么监听进程并在进程死掉的时候重新执行

1.最近在做一个即时聊天项目,要用到workman(http://www.workerman.net/),启动的时候要在Linux中项目根目录执行“php start.php start -d”开启后台进程一直跑
2.但是不定时进程会死掉,需要重新启动
3.要怎么可以监听这个进程,在死掉的时候自动执行“php start.php start -d”
4.是要用到supervisor吗?是的话那应该怎么配置文件?这样可以吗?
[program:php]
command=/usr/local/php/bin/php start.php start -d

阅读 7.1k
5 个回答

现在的Linux操作系统基本上都用systemd管理服务了,这玩意本身就自带服务挂了自动重启功能。只需要配置一个on-failure属性即可。

如果你想把你的程序变成服务,建议抽点时间学学systemd,不会占用你太多时间。

workerman 里面执行代码不能exit函数,否则就会挂掉

supervisor 挺好用的,也很方便,supervisor,给你一段,我自己服务器上一段配置,仅供参考:

[program:monitor-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /home/wwwroot/monitor/artisan queue:work --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/home/wwwlogs/monitor_worker.log

另外还有一些常用的命令

sudo supervisorctl start all 启动全部服务
sudo supervisorctl stop all 关闭全部服务
sudo supervisorctl restart all 重启全部服务
sudo supervisorctl status 查看服务状态
sudo supervisorctl -c /etc/supervisor/supervisord.conf 指定配置文件
sudo supervisorctl reread 重复读取配置
sudo supervisorctl update 更新配置

我使用supervisor 遇到过的问题是,进程挂了,重启也没用,提示的错误是端口被占用.已经kill了进程了,端口依然不能释放.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题