天天看點

【Linux】supervisord 程序管理,自動重新開機

supervisord的介紹:

  1. 官網: http://supervisord.org/
  2. github: https://github.com/Supervisor/supervisor

概述:

軟體功能:

本軟體是程序管理系統,可以很簡單的管理系統,同時提供了很豐富的接口可以讓你随心所欲的管理

應用場景:

  1. 常駐任務維護、管理,不論你的常駐程序是什麼語言寫的,都可以使用本神器管理
  2. 用來監控nginx, redis, mongodb等軟體,實作軟體如果因為異常挂了,可以自動重新開機,不至于終端服務

簡單來講:守護程序,如果你的程序一直在運作,突然挂了。 那麼supervisord能幫你速度拉起這個程序,使之正常運作

架構:

supervisord: 服務端,真正用來監控程式的程序

supervisorctl: 用戶端,用來管理監控程式的程序

安裝:

說明:

  1. 我這裡采用了一個自己約定的規範,友善組内成員形成共識,對服務管理沒有學習成本
  2. 我是依賴python安裝的

規範:

  1. 軟體根目錄: /data/opt
  2. 快捷方式根目錄: /data/opt/scripts,其中本目錄會加入到系統PATH中。export PATH='/data/opt/scripts':$PATH
  3. 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的程序 

【Linux】supervisord 程式管理,自動重新開機

 可以看到 /tmp/test.txt 裡面的内容在增加 

【Linux】supervisord 程式管理,自動重新開機

測試

現在收到殺掉python test.py這個程序 

【Linux】supervisord 程式管理,自動重新開機

kill -9 5535 殺死python test.py這個程序

然後再去檢視程序 馬上就可以看到 python test.py又出現了 

看下 程序号 已經變成了 5592

參考:

​​相當不錯的講解​​

​​結構樹講解跟配置​​

​​supervisord 配置參數解釋​​