1. 程式人生 > >使用supervisor 管理程序

使用supervisor 管理程序

Supervisord是用Python實現的一款非常實用的程序管理工具,類似於monit(關於monit見我的部落格:用monit監控系統關鍵程序),monit和supervisord的一個比較大的差異是supervisord管理的程序必須由supervisord來啟動,monit可以管理已經在執行的程式;supervisord還要求管理的程式是非daemon程式,supervisord會幫你把它轉成daemon程式,因此如果用supervisord來管理nginx的話,必須在nginx的配置檔案裡新增一行設定daemon off讓nginx以非daemon方式啟動。
安裝方式可以採用pip安裝,也可以使用easy_install或者apt-get。
使用apt-get比較簡單,系統級的配置都會自動處理好

apt-get安裝

apt-get install supervisor

安裝完成後配置檔案預設在/etc/supervisor目錄下,其中supervisord.conf是總的配置檔案conf.d記憶體放每個管理程序的配置,一般配置如下

[program:dm_mysql-data2es_py]
autorestart=true  ;自動啟動
directory=/var/www/dmp/data-stream-program/  ;主目錄
command=/usr/bin/python3.5  /var/www/dmp/data-stream-program/dm_mysql-data2es_py.py ;執行命令
stdout_logfile_maxbytes = 20MB ;日誌大小
stdout_logfile_backups = 10 ;日誌備份數量
stdout_logfile = /opt/logs/dm_mysql-data2es_py.log ;日誌目錄

因為採用apt-get方式安裝所以可以使用systemctl管理spuervisor服務

systemctl status supervisor.service #檢視狀態
 systemctl start supervisor.service #啟動
 systemctl stop supervisor.service #停止
 systemctl restart supervisor.service #重啟

至於supervisor管理的程序,可以使用supervisorctl來管理
管理方式跟systemctl很類似

systemctl status    # 檢視程式狀態
systemctl stop update_ip   # 關閉 update_ip 程式
systemctl start update_ip  # 啟動 update_ip 程式
systemctl restart update_ip    # 重啟 update_ip 程式
systemctl reread    # 讀取有更新(增加)的配置檔案,不會啟動新新增的程式
systemctl update    # 重啟配置檔案修改過的程式

pip安裝方式參考這裡https://www.jianshu.com/p/bf2b3f4dec73