linux學習(四) -- supervisor守護進程


 
supervisor是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變為后台daemon,並監控進程狀態,異常退出時能自動重啟。
 
1.安裝 apt-get install supervisor
 
2.配置目錄結構
 
--conf.d (啟動進程配置文件存放路徑)
--supervisord.conf(主配置文件)
 
1>首先,查看主配置文件
 
沒有做太多修改,只是設置port=65000,這樣可以打開supervisor的web頁面的監控台,訪問方法是 http://xxx.xxx.xxx.xxx:65000
 
2>conf.d 文件夾,我們可以創建相應的文件,放入此文件夾下,因為主配置文件已經include了此文件下的配置
cd conf.d
touch album.conf
vim album.conf ,寫入以下內容
 
[program:album_app.js]
directory = /data/album
command=nodejs app.js
user = root
autostart=true
startsecs=2
autorestart=true
redirect_stderr=true
stopsignal=INT
stdout_logfile=/data/logs/err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
 
3.相應的命令
 
這個工具主要就兩個命令:
supervisord : supervisor的服務器端部分,啟動supervisor就是運行這個命令
supervisorctl:啟動supervisor的命令行窗口。
 
3.1. 啟動supervisord
$supervisord -c /etc/supervisor/supervisord.conf
3.2. 關閉supervisord
$supervisorctl shutdown
3.3. 重新載入配置
$supervisorctl reload
3.4.更新新的配置到supervisord    
$supervisorctl update  
3.5.啟動某個進程(program_name=你配置中寫的程序名稱)
$supervisorctl start program_name  
3.6.查看正在守候的進程
$supervisorctl  
3.7.停止某一進程 (program_name=你配置中寫的程序名稱)
$supervisorctl stop program_name  
3.8.重啟某一進程 (program_name=你配置中寫的程序名稱)
$supervisorctl restart program_name  
3.9.停止全部進程
$supervisorctl stop all  
注意:顯示用stop停止掉的進程,用reload或者update都不會自動重啟。
 
 
4.配置文件詳細解析
 
=====================主配置文件========================
[unix_http_server]
file=/tmp/supervisor.sock   ; UNIX socket 文件,supervisorctl 會使用
;chmod=0700                 ; socket 文件的 mode,默認是 0700
;chown=nobody:nogroup       ; socket 文件的 owner,格式: uid:gid
 
;[inet_http_server]         ; HTTP 服務器,提供 web 管理界面
;port=127.0.0.1:9001        ; Web 管理后台運行的 IP 和端口,如果開放到公網,需要注意安全性
;username=user              ; 登錄管理后台的用戶名
;password=123               ; 登錄管理后台的密碼
 
[supervisord]
logfile=/tmp/supervisord.log ; 日志文件,默認是 $CWD/supervisord.log
logfile_maxbytes=50MB        ; 日志文件大小,超出會 rotate,默認 50MB
logfile_backups=10           ; 日志文件保留備份數量默認 10
loglevel=info                ; 日志級別,默認 info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=false               ; 是否在前台啟動,默認是 false,即以 daemon 的方式啟動
minfds=1024                  ; 可以打開的文件描述符的最小值,默認 1024
minprocs=200                 ; 可以打開的進程數的最小值,默認 200
 
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
 
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通過 UNIX socket 連接 supervisord,路徑與 unix_http_server 部分的 file 一致
;serverurl=http://127.0.0.1:9001 ; 通過 HTTP 的方式連接 supervisord
 
; 包含其他的配置文件
[include]
files = /etc/supervisor/conf.d/*.conf   ; 可以是 *.conf 或 *.ini
 
 
=====================單獨進程控制文件========================
[program:album_app.js]
directory = /data/album ;程序的啟動目錄
command=nodejs app.js ;啟動命令
user = root ;啟動用戶
autostart=true ;在 supervisord 啟動的時候也自動啟動
startsecs=2 ;啟動2秒后沒有異常退出,就當作已經正常啟動了
autorestart=true ; 程序異常退出后自動重啟
redirect_stderr=true ; 把 stderr 重定向到 stdout,默認 false
stopsignal=INT
stdout_logfile=/data/logs/err.log
stderr_logfile_maxbytes=1MB ; stdout 日志文件大小,默認 50MB
stderr_logfile_backups=10   ; stdout 日志文件備份數
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
 
 
5.web控制台的效果
 
 
6.參考資料
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM