使用 supervisor 管理進程

使用 supervisor 管理進程

Supervisor是一個用 Python寫的進程管理工具,可以很方便的用來啟動、重啟、關閉進程。除了對單個進程的控制,還可以同時啟動、關閉多個進程,可以很方便的控制那些需要長期運行的進程,比如需要在服務器上長期運行的爬蟲之類,會在程序出錯以后自動重啟。

1.安裝

ubuntu下apt安裝

sudo apt install supervisor

pip安裝方式

sudo pip install supervisor

2.配置

創建配置文件
supervisor提供了一個快速產生配置文件的方法

echo_supervisord_conf > /etc/supervisord.conf

如果沒有root權限可以使用

echo_supervisord_conf > supervisord.conf

在當前目錄產生,然后用supervisor -c supervisord.conf來啟動服務
查看 supervisord 是否在運行:

ps -aux | grep supervisord

3.應用配置

至此,supervisor已經安裝完成,下面需要將應用添加進去,可以在剛剛的生成文件中直接添加命令,但是不推薦這么做,推薦使用以下的做法。
supervisor.conf中取消注釋掉以下命令(一般位于結尾)

;[include]
;files = relative/directory/*.ini

改為

[include]
files = /etc/supervisor/*.ini

/etc目錄下創建supervisor文件夾,在其下建立program.ini

[program:serialrecv]
directory = /home/jiang/program ; 程序的啟動目錄
command = python serialrecv.py  ; 運行的指令
autostart = true     ; 在 supervisord 啟動的時候也自動啟動
startsecs = 5        ; 啟動 5 秒后沒有異常退出,就當作已經正常啟動了
autorestart = true   ; 程序異常退出后自動重啟
startretries = 3     ; 啟動失敗自動重試次數,默認是 3
user = root          ; 用哪個用戶啟動
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默認 false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默認 50MB
stdout_logfile_backups = 20     ; stdout 日志文件備份數
; stdout 日志文件,需要注意當指定目錄不存在時無法正常啟動,所以需要手動創建目錄(supervisord 會自動創建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log

; 可以通過 environment 來添加需要的環境變量,一種常見的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere

啟動supervisor

sudo supervisord

監控應用運行情況

sudo supervisorctl

顯示如下界面

supdervisor>

運行status可以看到應用運行狀態,start <program name>可以啟動應用,stop <program name>停止應用,start allstop all可以啟動和停止所有應用。

4.問題

1.可能會遇到unix:///tmp/supervisor.sock not found,重新啟動supervisordsudo supervisord即可
2.無法開機啟動
/etc/rc.local添加啟動命令sudo supervisordexit 0之前即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容