首頁 > 軟體

進程管理工具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


IT145.com E-mail:sddin#qq.com