superviosr是一個Linux/Unix系統上的進程監控工具,他/她upervisor是一個Python開發的通用的進程管理程序,能夠管理和監控Linux上面的進程,能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓。不過同daemontools同樣,它不能監控daemon進程python
安裝:ios
yum install python-pip -ynginx
pip install supervisorvim
生成配置文件工具
echo_supervisord_conf > /etc/supervisord.confurl
修改配置文件spa
vim /etc/supervisord.conf操作系統
[inet_http_server] ; inet (TCP) server disabled by defaultpwa
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)
[include]
files = /etc/supervisor/*.conf
建立.conf目錄 mkdir /etc/supervisor
建立nginx配置文件 vim nginx.conf
[program:nginx]
autorestart=True
autostart=True
redirect_stderr=True
;environment=PATH=""
command=/usr/sbin/nginx -g 'daemon off;';注意必定要前臺啓動
user=root
;process_name = %(program_name)s%(process_num)d
;numprocs=3
;directory=/root/
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=20
;stdout
stdout_logfile=/var/log/supervisor/nginx.log
stderr_logfile=/var/log/supervisor/nginx_error.log
- logfile:log文件路徑
- logfile_maxbytes:log文件達到多少後自動進行輪轉,單位是KB、MB、GB。若是設置爲0則表示不限制日誌文件大小
- logfile_backups:輪轉日誌備份的數量,默認是10,若是設置爲0,則不備份
- loglevel:error、warn、info、debug、trace、blather、critical
- pidfile:pid文件路徑
- umask:umask值,默認022
- nodaemon:若是設置爲true,則supervisord在前臺啓動,而不是以守護進程啓動
- minfds:supervisord在成功啓動前可用的最小文件描述符數量,默認1024
- minprocs:supervisord在成功啓動前可用的最小進程描述符數量,默認200
- nocleanup:防止supervisord在啓動的時候清除已經存在的子進程日誌文件
- childlogdir:自動啓動的子進程的日誌目錄
- user:supervisord的運行用戶
- directory:supervisord以守護進程運行的時候切換到這個目錄
- strip_ansi:消除子進程日誌文件中的轉義序列
- environment:一個k/v對的list列表
- command:啓動程序使用的命令,能夠是絕對路徑或者相對路徑- process_name:一個python字符串表達式,用來表示supervisor進程啓動的這個的名稱,默認值是%(program_name)s- numprocs:Supervisor啓動這個程序的多個實例,若是numprocs>1,則process_name的表達式必須包含%(process_num)s,默認是1- numprocs_start:一個int偏移值,當啓動實例的時候用來計算numprocs的值- priority:權重,能夠控制程序啓動和關閉時的順序,權重越低:越早啓動,越晚關閉。默認值是999- autostart:若是設置爲true,當supervisord啓動的時候,進程會自動重啓。- autorestart:值能夠是false、true、unexpected。false:進程不會自動重啓,unexpected:當程序退出時的退出碼不是exitcodes中定義的時,進程會重啓,true:進程會無條件重啓當退出的時候。- startsecs:程序啓動後等待多長時間後才認爲程序啓動成功- startretries:supervisord嘗試啓動一個程序時嘗試的次數。默認是3- exitcodes:一個預期的退出返回碼,默認是0,2。- stopsignal:當收到stop請求的時候,發送信號給程序,默認是TERM信號,也能夠是 HUP, INT, QUIT, KILL, USR1, or USR2。- stopwaitsecs:在操做系統給supervisord發送SIGCHILD信號時等待的時間- stopasgroup:若是設置爲true,則會使supervisor發送中止信號到整個進程組- killasgroup:若是設置爲true,則在給程序發送SIGKILL信號的時候,會發送到整個進程組,它的子進程也會受到影響。- user:若是supervisord以root運行,則會使用這個設置用戶啓動子程序- redirect_stderr:若是設置爲true,進程則會把標準錯誤輸出到supervisord後臺的標準輸出文件描述符。- stdout_logfile:把進程的標準輸出寫入文件中,若是stdout_logfile沒有設置或者設置爲AUTO,則supervisor會自動選擇一個文件位置。- stdout_logfile_maxbytes:標準輸出log文件達到多少後自動進行輪轉,單位是KB、MB、GB。若是設置爲0則表示不限制日誌文件大小- stdout_logfile_backups:標準輸出日誌輪轉備份的數量,默認是10,若是設置爲0,則不備份- stdout_capture_maxbytes:當進程處於stderr capture mode模式的時候,寫入FIFO隊列的最大bytes值,單位能夠是KB、MB、GB- stdout_events_enabled:若是設置爲true,當進程在寫它的stderr到文件描述符的時候,PROCESS_LOG_STDERR事件會被觸發- stderr_logfile:把進程的錯誤日誌輸出一個文件中,除非redirect_stderr參數被設置爲true- stderr_logfile_maxbytes:錯誤log文件達到多少後自動進行輪轉,單位是KB、MB、GB。若是設置爲0則表示不限制日誌文件大小- stderr_logfile_backups:錯誤日誌輪轉備份的數量,默認是10,若是設置爲0,則不備份- stderr_capture_maxbytes:當進程處於stderr capture mode模式的時候,寫入FIFO隊列的最大bytes值,單位能夠是KB、MB、GB- stderr_events_enabled:若是設置爲true,當進程在寫它的stderr到文件描述符的時候,PROCESS_LOG_STDERR事件會被觸發- environment:一個k/v對的list列表- directory:supervisord在生成子進程的時候會切換到該目錄- umask:設置進程的umask- serverurl:是否容許子進程和內部的HTTP服務通信,若是設置爲AUTO,supervisor會自動的構造一個url