本文主要記錄在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
會從新啓動這個應用)