SUPERVISOR進程管理器配置指南

SUPERVISOR進程管理器配置指南python

  1. supervisor簡介

1.1. 官網算法

http://supervisord.org/瀏覽器

1.2. 介紹服務器

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

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

  1. 安裝和配置

2.1. 安裝rest

$apt-get install python-setuptools $easy_install supervisor $echo_supervisord_conf > /etc/supervisord.conf 2.2. 配置日誌

$nano /etc/supervisord.conf 2.3. (program)配置模板code

[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 簡化模板server

[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:

經常使用信號說明-原文

信號名稱 數字表示 說明 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
  2. SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  3. SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
  4. SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  5. SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  6. SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  7. SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  8. SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
  9. SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
  10. SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
  11. SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
  12. SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  13. SIGRTMAX-1 64) SIGRTMAX
相關文章
相關標籤/搜索