Supervisor用于管理机器的进程并自动监控进程存不存在、不存在则自动拉起。

1. 安装

CentOS下安装

yum install python-setuptools
easy_install supervisor

2. 配置和启动

# root身份执行
echo_supervisord_conf > /etc/supervisord.conf

这里以一个普通的spring boot编译出来的jar包执行为例,配置文件增加以下内容(放在最前面或最后面均可):

[program:spring-boot-demo]
command=java -jar /root/demo.jar
user=root
autostart=true
autorestart=true
startsecs=30
stdout_logfile=/root/demo.log

其中startsecs是预计启动的时间秒数,也可以理解过超过这个秒数程序还在就表示启动成功了。

3. 设置supervisor开机自动启动

/usr/lib/systemd/system/目录下新增文件supervisord.service,内容如下:

# supervisord service for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

然后执行systemctl enable supervisord.servicesystemctl start supervisord.service

如果修改了supervisor配置文件要则执行systemctl reload supervisord.service

使用命令supervisorctl status可以查看当前supervisor管理下的进程列表及状态。

4. 其它问题

对于一些环境变量,需要例如~/.bashrc引入的,此时推荐这么写,示例:

[program: dapi]
user=pyer
command=/bin/bash -c 'source ~/.bashrc  && /usr/local/python3.6/bin/pipenv run python manage.py'
# 其它属性
文档更新时间: 2019-04-29 16:02   作者:nick