本文主要记录在centos7上为应用添加进程守护程序,防止因系统重启或应用意外退出致使程序再也不运行。java
在centos6上安装使用supervisorpython
安装守护程序supervisord
yum install python-setuptools easy_install supervisor echo_supervisord_conf > /etc/supervisord.conf
修改配置文件
把内容:shell
[include] files = /usr/local/share/supervisor/*.conf
加入/etc/supervisord.conf
内(注意行前的;
为注释,要去掉)。centos
添加守护程序
在/usr/local/share/supervisor/
目录下添加demo.conf
,内容以下:app
[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
,内容以下:url
[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
centos7
控制进程守护
- 启动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
会从新启动这个应用)