进程管理工具Supervisor
安装(只能使用python2版本安装)
supervisor对python3支持不好,须使用python2
sudo pip install supervisor
输出默认配置
运行echo_supervisord_conf命令输出默认的配置项,可以如下操作将默认配置保存到文件中
# 切换到root用户再执行
echo_supervisord_conf > supervisord.conf
修改配置
# vi /etc/supervisord.conf
;[include]
;files = relative/directory/*.ini
# 改成下面这样
[include]
files = /etc/supervisor/*.conf
# 包含/etc/supervisor 目录下的所有配置信息
# include选项指明包含的其他配置文件
创建supervisor目录
sudo mkdir -p /etc/supervisor
启动(使用python用户)
supervisord -c /etc/supervisord.conf
supervisorctl命令
我们可以利用supervisorctl来管理supervisor。
# 查看状态
supervisorctl status
# 停止im单一程序
supervisorctl stop im
# 启动im单一程序
supervisorctl start 进程名
# 重新启动进程
supervisorctl restart 进程名
# 重新加载配置,并重新启动
supervisorctl reload
# 关闭 toutiao组程序
supervisorctl stop toutiao:*
# 启动 toutiao组程序
supervisorctl start toutiao:*
# 重启 toutiao组 程序
supervisorctl restart toutiao:*
# 重启配置文件修改过的程序
supervisorctl update
执行status命令时,显示如下信息说明程序运行正常:
supervisor> status
toutiao:toutiao-app RUNNING pid 32091, uptime 00:00:02
查看 supervisord 是否在运行:
ps aux | grep supervisord
实例使用supervisor管理im进程
-
配置配置信息
# 给im.sh添加执行的权限 chmod +x im.sh # vim im_supervisor.conf [program:im] command=/home/python/toutiao-backend/scripts/im.sh directory=/home/python/toutiao-backend user=python autorestart=true redirect_stderr=false loglevel=info stopsignal=KILL stopasgroup=true killasgroup=true
-
使用软连接的方式
好处: 1.不用维护两份配置文件 2.让普通用户可以直接修改配置信息
-
创建软连接命令
sudo ln -s /home/python/toutiao-backend/scripts/im_supervisor.conf /etc/supervisor/im_supervisor.conf
-
给im.sh脚本添加可执行权限
chmod +x /home/python/toutiao-backend/scripts/im.sh
-
重新启动supervisor
supervisorctl reload
-
演示
使用kill 命令杀死im进程,过一段时间,又会被supervisor拉起,注意进程号。