Supervisor
Supervisor是用Python開發(fā)的一套通用的進(jìn)程管理程序寿酌,能將一個普通的命令行進(jìn)程變?yōu)楹笈_daemon蒋得,并監(jiān)控進(jìn)程狀態(tài)乙墙,異常退出時能自動重啟。它是通過fork/exec的方式把這些被管理的進(jìn)程當(dāng)作supervisor的子進(jìn)程來啟動咸产,這樣只要在supervisor的配置文件中,把要管理的進(jìn)程的可執(zhí)行文件的路徑寫進(jìn)去即可仲闽。也實現(xiàn)當(dāng)子進(jìn)程掛掉的時候脑溢,父進(jìn)程可以準(zhǔn)確獲取子進(jìn)程掛掉的信息的,可以選擇是否自己啟動和報警蔼囊。supervisor還提供了一個功能焚志,可以為supervisord或者每個子進(jìn)程,設(shè)置一個非root的user畏鼓,這個user就可以管理它對應(yīng)的進(jìn)程酱酬。
官網(wǎng):http://supervisord.org/
安裝supervisor
1、sudo apt-get install supervisor云矫,通過這種方式安裝后膳沽,自動設(shè)置為開機(jī)啟動
2、sudo pip install supervisor 進(jìn)行安裝让禀,但是需要手動啟動挑社,然后設(shè)置為開機(jī)啟動
配置
supervisor的配置文件在:/etc/supervisor/supervisord.conf ,這個配置文件提供了大部分的默認(rèn)配置巡揍,子進(jìn)程的配置文件需要添加在/etc/supervisor/conf.d/*.conf痛阻,以下是一份簡單的配置文件內(nèi)容:
[program:xxxxx] ????????;程序名稱,在 supervisorctl 中通過這個值來對程序進(jìn)行一系列的操作autorestart=True? ? ? ? ?; 程序異常退出后自動重啟
autostart=True? ? ? ? ????; 在 supervisord 啟動的時候也自動啟動
stderr_logfile=/home/app/logs/err.log? ? ; 錯誤日志
stdout_logfile=/home/app/logs/run.log? ? ;運行日志
command=python /home/app/server.py ; 啟動命令腮敌,與手動在命令行啟動的命令是一樣的user=ubuntu? ? ? ? ? ; 用哪個用戶啟動
startsecs=1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;啟動間隔
命令
sudo?supervisorctl update? #更新配置文件
sudo?supervisorctl status? #查看當(dāng)前子進(jìn)程狀態(tài)
sudo supervisorctl start xxxxx? #啟動子進(jìn)程
sudo supervisorctl stop xxxxx? #停止子進(jìn)程
sudo supervisorctl? restart xxxxx #重啟