supervisord的介紹:
- 官網: http://supervisord.org/
- github: https://github.com/Supervisor/supervisor
概述:
軟件功能:
本軟件是進程管理系統,可以很簡單的管理系統,同時提供了很豐富的接口可以讓你隨心所欲的管理
應用場景:
-
- 常駐任務維護、管理,不論你的常駐進程是什么語言寫的,都可以使用本神器管理
- 用來監控nginx, redis, mongodb等軟件,實現軟件如果因為異常掛了,可以自動重啟,不至於終端服務
簡單來講:守護進程,如果你的進程一直在運行,突然掛了。 那么supervisord能幫你速度拉起這個進程,使之正常運行
架構:
supervisord: 服務端,真正用來監控程序的進程
supervisorctl: 客戶端,用來管理監控程序的進程
安裝:
說明:
-
- 我這里采用了一個自己約定的規范,方便組內成員形成共識,對服務管理沒有學習成本
- 我是依賴python安裝的
規范:
-
- 軟件根目錄: /data/opt
- 快捷方式根目錄: /data/opt/scripts,其中本目錄會加入到系統PATH中。export PATH='/data/opt/scripts':$PATH
- supervisord的配置目錄、以及運行日志目錄都放置在/data/opt/supervisord里
依賴:
python
安裝:
pip install supervisor
配置文件
“echo_supervisord_conf”命令來生成配置文件,例
echo_supervisord_conf > /etc/supervisord.conf
配置管理的進程
在 /etc/supervisord.conf 最后加上這兩句
[program:python]
command=python /tmp/test.py
/tmp/test.py的文件內容
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
while(True):
# 3秒
time.sleep(1)
# 打開文件
fo = open("/tmp/test.txt", "a")
print "文件名為: ", fo.name
str = time.ctime() + "\n"
fo.write( str )
# 關閉文件
fo.close()
啟動supervisord
supervisord #回車即啟動 -h 下可以看下參數的具體配置
查看 python的進程
可以看到 /tmp/test.txt 里面的內容在增加
測試
現在收到殺掉python test.py這個進程
kill -9 5535 殺死python test.py這個進程
然后再去查看進程 馬上就可以看到 python test.py又出現了
看下 進程號 已經變成了 5592
參考: