本文主要记录在centos7上为应用添加进程守护程序,防止因系统重启或应用意外退出导致程序不再运行。
安装守护程序supervisord
yum install python-setuptools
easy_install supervisor
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件
把内容:
[include]
files = /usr/local/share/supervisor/*.conf
加入/etc/supervisord.conf
内(注意行前的;
为注释,要去掉)。
添加守护程序
在/usr/local/share/supervisor/
目录下添加demo.conf
,内容如下:
[program:demo]
user=xxx
directory=/home/xxuser/xxapp
command=/usr/bin/java -server -jar xxx.jar
autostart=true
autorestart=true
startsecs=3
stdout_logfile=/usr/local/share/supervisor/demo.log
设置supervisor开机启动
进入目录/usr/lib/systemd/system/
新增文件supervisord.service
,内容如下:
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
执行systemctl enable supervisord.service
控制进程守护
- 启动supervisor进程
systemctl start supervisord.service
,会启动所有被守护的应用(在/usr/local/share/supervisor/
配置过的) - 停止进程守护
systemctl stop supervisord.service
,会停止所有被守护的应用 - 重载变化的配置
systemctl reload supervisord.service
,当/etc/supervisord.conf
变化时执行
控制被守护的应用
- 查看所有应用
supervisorctl status
- stop某个应用
supervisorctl stop xxx
, xxx为上一步现实的应用名即[program:demo]
这里是demo - restart某个应用
supervisorctl restart xxx
- 修改某个应用的配置后(
supervisorctl update
会重新启动这个应用)