SUPERVISOR進程管理器配置指南

SUPERVISOR進程管理器配置指南

1. supervisor簡介

1.1. 官網

http://supervisord.org/html

1.2. 介紹

Supervisor是一個進程控制系統. 它是一個C/S系統(注意: 其提供WEB接口給用戶查詢和控制), 它容許用戶去監控和控制在類UNIX系統的進程. 它的目標與launchd, daemontools和runit有些類似, 可是與它們不同的是, 它不是做爲init(進程號pid是1)運行. 它是被用來控制進程, 而且它在啓動的時候和通常程序並沒有二致. python

那麼通俗點,它的做用是什麼?你的Nginx,Tomcat,memcache,Redis...會崩麼,不會?好吧,那你本身寫的服務器監測腳本呢?好吧,不要再糾結了,交給Supervisor吧,它會幫你維護這些,即便它們不當心崩了,Supervisor會幫你看住它們,維護它們。算法

2. 安裝和配置

2.1. 安裝

$apt-get install python-setuptools
$easy_install supervisor
$echo_supervisord_conf > /etc/supervisord.conf

2.2. 配置

$nano /etc/supervisord.conf

2.3. (program)配置模板

[program:cat]
command=/bin/cat
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=true
startsecs=10
startretries=3
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
user=chrism
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment=A="1",B="2"
serverurl=AUTO

簡化模板瀏覽器

[program:test]
command=python test.py
directory=/home/supervisor_test/
autorestart=true
stopsignal=INT
user=root
stdout_logfile=test_out.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=test_err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

2.4. (program)配置說明

;*爲必須填寫項
;*[program:應用名稱]
[program:cat]

;*命令路徑,若是使用python啓動的程序應該爲 python /home/test.py, 
;不建議放入/home/user/, 對於非user用戶通常狀況下是不能訪問
command=/bin/cat

;當numprocs爲1時,process_name=%(program_name)s
;當numprocs>=2時,%(program_name)s_%(process_num)02d
process_name=%(program_name)s

;進程數量
numprocs=1

;執行目錄,如有/home/supervisor_test/test1.py
;將directory設置成/home/supervisor_test
;則command只需設置成python test1.py
;不然command必須設置成絕對執行目錄
directory=/tmp

;掩碼:--- -w- -w-, 轉換後rwx r-x w-x
umask=022

;優先級,值越高,最後啓動,最早被關閉,默認值999
priority=999

;若是是true,當supervisor啓動時,程序將會自動啓動
autostart=true

;*自動重啓
autorestart=true

;啓動延時執行,默認1秒
startsecs=10

;啓動嘗試次數,默認3次
startretries=3

;當退出碼是0,2時,執行重啓,默認值0,2
exitcodes=0,2

;中止信號,默認TERM
;中斷:INT(相似於Ctrl+C)(kill -INT pid),退出後會將寫文件或日誌(推薦)
;終止:TERM(kill -TERM pid)
;掛起:HUP(kill -HUP pid),注意與Ctrl+Z/kill -stop pid不一樣
;從容中止:QUIT(kill -QUIT pid)
;KILL, USR1, USR2其餘見命令(kill -l),說明1
stopsignal=TERM

stopwaitsecs=10

;*以root用戶執行
user=root

;重定向
redirect_stderr=false

stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

;環境變量設置
environment=A="1",B="2"

serverurl=AUTO

2.5. (inet_http_server)配置說明

可使用瀏覽器查看和控制進程狀態服務器

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001          ; (ip_address:port specifier, *:port for all iface)
username=user              ; 用戶名 (default is no username (open server))
password=123               ; 密碼 (default is no password (open server))

3. 啓動與關閉

3.1. 啓動supervisord

$supervisord -c /etc/supervisord.conf

3.2. 關閉supervisord

$supervisorctl shutdown

3.3. 從新載入配置

$supervisorctl reload

說明1:

經常使用信號說明-原文url

信號名稱 數字表示 說明
SIGHUP 1 終端掛起或控制進程終止。當用戶退出Shell時,由該進程啓動的全部進程都會收到這個信號,默認動做爲終止進程。
SIGINT 2 鍵盤中斷。當用戶按下組合鍵時,用戶終端向正在運行中的由該終端啓動的程序發出此信號。默認動做爲終止進程。
SIGQUIT 3 鍵盤退出鍵被按下。當用戶按下或組合鍵時,用戶終端向正在運行中的由該終端啓動的程序發出此信號。默認動做爲退出程序。
SIGFPE 8 發生致命的運算錯誤時發出。不只包括浮點運算錯誤,還包括溢出及除數爲0等全部的算法錯誤。默認動做爲終止進程併產生core文件。
SIGKILL 9 無條件終止進程。進程接收到該信號會當即終止,不進行清理和暫存工做。該信號不能被忽略、處理和阻塞,它向系統管理員提供了能夠殺死任何進程的方法。
SIGALRM 14 定時器超時,默認動做爲終止進程。
SIGTERM 15 程序結束信號,能夠由 kill 命令產生。與SIGKILL不一樣的是,SIGTERM 信號能夠被阻塞和終止,以便程序在退出前能夠保存工做或清理臨時文件等。
$ kill -l
 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX
相關文章
相關標籤/搜索