2021-05-12 14:32:11
進程管理工具Supervisor的安裝及使用
2020-06-16 17:17:36
需求:有一個進程需要每時每刻不斷的跑,但是這個進程又有可能由於各種原因有可能中斷。當進程中斷的時候我需要他能自動重新啟動,保證服務一直在跑著。基於整個需求,一開始想的是起一個指令碼,監聽該服務的埠,一旦發現埠占用被解除,立即重新執行命令。但是後來發現linux已經有了類似的東西,即今日的主角Supervisor:
安裝(Ubuntu)
sudo apt-get install supervisor
可以進入paython測試是否能import supervisor 來確定是否已經裝好。
設定
安裝好supervisor後就可以編寫組態檔了。組態檔放在/etc/supervisor/conf.d/目錄下,最好一個進程對應一個.conf檔案。
組態檔引數說明:
[program: test] command=xxxxxxxx ;如果有多條命令,可以寫入shell指令碼再在這裡呼叫 directory=xxxxx ;執行命令時切換到的目錄 user=xxxx ;執行命令所用的linux使用者身份 autorestart=true ;是否自動重新啟動 autostart=true ;啟動supervisor時是否自行啟動該程式 redirect_stderr=true ;如果為true則將stderr傳送到stdout相應的log檔案中去 stdout_logfile=/path/to/logfile ;制定stdout的輸出檔案 stdout_logfile_maxbytes=10MB ;限定logfile的大小, 預設為50M stdout_logfile_backups=10 ;儲存logfile的最大數目,如果操作這個數目則對最早的logfile進行覆蓋,預設為10 environment=A="1", B="2" ;設定環境變數,這裡可以儲存執行程式需要的引數
我要的功能非常簡單,僅做了如下設定
[program: server] command=Python /home/zxchen/server.py ; autorestart=true ; autostart=true ;
啟動服務
sudo supervisorctl reread #成功提示:server: available
sudo supervisorctl reload #成功提示:Restarted supervisord
sudo supervisorctl start app #如果服務沒有啟動時可以試試這個指令
檢驗
lsof -i:埠號 #檢視該埠狀態 kill -9 PID #kill掉這個進程
再次檢視埠狀態,發現埠上服務的PID已改變,即成功。
CentOS7下Supervisor安裝與設定(Linux/Unix進程管理工具) http://www.linuxidc.com/Linux/2017-02/140417.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-04/142866.htm
相關文章