其实标题说了这么多,无非就是四个字:守护进程
比如我有个项目叫bert-rank,平常运行方式就是sh run.sh。想让这个服务即使被杀也能自动重启,怎么操作呢?
方法如下:
- 安装yum install supervisor
- 修改/etc/supervisord.conf,最后一行改为下面的内容
files = supervisord.d/*.conf
- 在/etc/supervisord.d目录下,新建bert-rank.conf,并添加以下内容
[program:bert-rank]
command=sh run.sh
directory=/home/your_name/bert-rank
autorestart=true
autostart=true
stderr_logfile=/home/your_name/bert-rank/err.log
stdout_logfile=/home/your_name/bert-rank/out.log
user=your_name
stopsignal=INT
startsecs=1
- 启动supervisor
python2 /usr/bin/supervisord -c /etc/supervisord.conf
-
你注意观察下自己的服务是否已经自动启动了,并且尝试杀一下看看自动重启效果
-
后续的一些常用命令:
supervisorctl reload :修改完配置文件后重新启动supervisor
supervisorctl status :查看supervisor监管的进程状态
supervisorctl start 进程名 :启动XXX进程
supervisorctl stop 进程名 :停止XXX进程
supervisorctl stop all:停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl update:根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启