安裝
pip install supervisor
生成配置檔案(/etc/supervisord.conf)
echo_supervisord_conf > /etc/supervisord.conf
啟動supervisor
- 手動啟動
/usr/bin/supervisord -c /etc/supervisor.conf
- 設定開機自啟
編輯啟動腳本(各系統腳本https://github.com/Supervisor/initscripts)
vim /lib/systemd/system/supervisord.service
# supervisord service for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
加入開機自啟服務
systemctl enable supervisord.service #設定開機自啟
systemctl start/restart/stop supervisor.service 開啟/重新開機/停止
- 修改配置檔案include字段(在配置檔案底部,配置include)
[include]
files = etc/supervisord/conf.d/*.conf
- 添加被管理的程序
在/etc/supervisord/conf.d 目錄下的 xxx.conf 檔案中配置 supervisor 要管理的程序。
如管理tomcat程序:vi /etc/supervisord/conf.d/tomcat.conf
;[program:tomcat] 是被管理的程序配置參數,tomcat是程序的名稱,原文用xx表示,tomcat是我要監控的對象
[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run ; 程式啟動指令
autostart=true ; 在supervisord啟動的時候也自動啟動
startsecs=10 ; 啟動10秒後沒有異常退出,就表示程序正常啟動了,預設為1秒
autorestart=true ; 程式退出後自動重新開機,可選值:[unexpected,true,false],預設為unexpected,表示程序意外殺死後才重新開機
startretries=3 ; 啟動失敗自動重試次數,預設是3
user=root ; 用哪個使用者啟動程序,預設是root
priority=999 ; 程序啟動優先級,預設999,值小的優先啟動
redirect_stderr=true ; 把stderr重定向到stdout,預設false
stdout_logfile_maxbytes=20MB ; stdout 日志檔案大小,預設50MB
stdout_logfile_backups = 20 ; stdout 日志檔案備份數,預設是10
; stdout 日志檔案,需要注意當指定目錄不存在時無法正常啟動,是以需要手動建立目錄(supervisord 會自動建立日志檔案)
stdout_logfile=stdout_logfile=/usr/local/tomcat/logs/catalina.out
stopasgroup=true ;預設為false,程序被殺死時,是否向這個程序組發送stop信号,包括子程序
killasgroup=true ;預設為false,向程序組發送kill信号,包括子程序
environment=LC_ALL="C.UTF-8", # 啟動此服務時設定的環境變量
- 重新讀取 *.conf 檔案,以識别新添加的服務
supervisorctl reload
- 全部停止
supervisorctl stop all
- 全部啟動
supervisorctl start all