【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的進程 

 可以看到 /tmp/test.txt 里面的內容在增加 

測試

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

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

然后再去查看進程 馬上就可以看到 python test.py又出現了 
看下 進程號 已經變成了 5592

參考:

相當不錯的講解

結構樹講解跟配置

supervisord 配置參數解釋

控制界面實現

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM