Supervisor 是一個 Python 開發的 client/server 系統,可以管理和監控類 UNIX 操作系統上面的進程。它可以同時啟動,關閉多個進程,使用起來特別的方便。
supervisord(server 部分):讀入配置文件并管理子進程,supervisord會自動將應用程序的進程轉為守護進程,這樣即使你退出shell也沒影響。注意,如果一個進程已經是守護進程了,那用supervisord監控時,會報如下錯誤,因此用supervisor監控的程序,必須以前臺進程的方式啟動。
FATAL Exited too quickly (PRocess log may have details)supervisorctl(client 部分):命令行客戶端,用戶可以通過它與不同的 supervisord 進程聯系,獲取子進程的狀態,如
supervisorctl reread ; 重載配置文件,并不重啟任何進程supervisorctl reload ; 重新啟動supervisord進程supervisorctl stop(start, restart) xxx,停止(啟動,重啟)某一個進程(xxx);supervisorctl update: 根據最新的配置文件,啟動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啟;安裝完成后,會生成三個執行程序:supervisortd、supervisorctl、echo_supervisord_conf,其中echo_supervisor_conf 是生成supervisor 配置文件的進程。
Supervisor只能管理非daemon的進程,也就是說Supervisor不能管理守護進程。否則提示Exited too quickly (process log may have details)異常。因此我們需要將一些daemon進程運行的程序,進行一下處理。
tomcat 的處理: /opt/tomcat/bin/catalina.sh runNginx 處理:增加 daemon off 至nginx.conf 的全局配置項中在conf文件的最后,添加如下內容
[program:nginx]command=/usr/sbin/nginx -c /etc/nginx/nginx.confnumprocs=1autorestart=trueredirect_stderr=truestdout_logfile=/var/log/supervisor-nginx.logstderr_logfile=/var/log/supervisor-nginx.errloglevel=info以上內容只介紹了管理一個nginx進程的情況,如果是多個進程,建議Include 進來,進行分類配置,具體可以參看 supervisord.conf 文件中
;[include];files = relative/directory/*.ini針對以上進行修改,指定一個放配置文件的目錄。
新聞熱點
疑難解答