supervisor進程管理工具

Supervisorpython

  一個python寫的進程管理工具,用來啓動、關閉、重啓進程,能夠同時控制多個進程。ubuntu

安裝:
  pip install supervisorsocket

配置:
  經過配置文件來知足本身的需求工具

  配置文件分爲兩部分:url

  • supervisord(server端,對應supervisorctl爲client端)
  • 應用程序(即咱們管理要應用程序)

  1.supervisord配置:spa

    安裝好後,能夠運行echo_supervisord_conf命令來輸出默認的配置項(裏面有配置項和對應的註釋)命令行

    可是一般的作法是把其重定向到指定的文件中,運行以下:debug

      echo_supervisord_conf > xx/supervisord.confunix

    上述重定向的文件能夠隨便放在哪一個目錄下面,有訪問權限就能夠rest

    配置參考:

 1 [unix_http_server]
 2 file=/tmp/supervisor.sock   ; the path to the socket file
 3 
 4 [supervisord]
 5 logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
 6 logfile_maxbytes=50MB        ; max main logfile bytes b4 rotation; default 50MB
 7 logfile_backups=10           ; # of main logfile backups; 0 means none, default 10
 8 loglevel=info                ; log level; default info; others: debug,warn,trace
 9 pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
10 nodaemon=false               ; start in foreground if true; default false
11 minfds=1024                  ; min. avail startup file descriptors; default 1024
12 minprocs=200                 ; min. avail process descriptors;default 200
13 
14 [rpcinterface:supervisor]
15 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
16 
17 [supervisorctl]
18 serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
19 
20 [include]
21 files = relative/directory/*.ini

    啓動supervisord:

      supervisord -c xx/supervisord.conf

    經過-c去指定配置文件路徑,若是不指定路徑的話,則會按以下順序查找:

      ./supervisord.conf ./etc/supervisord.conf /etc/supervisord.conf

    查看是否在運行:

      ps -ef |grep "supervisord.conf"

  

  2.program配置:

    接下來就是應用程序的配置了

    注意一個地方:

      通常咱們會把要管理的進程的配置文件單獨獨立出來,而後經過上面supervisord的配置文件中的 [include] 選項(上述配置參考第21行)進行導入,這樣子的話就可使多個進程的管理相互獨立出來。

    配置參考:

 1 [program:starcloud]
 2 directory = /home/ubuntu/StarCloud/starcloud  ; 程序的啓動目錄
 3 command = /usr/bin/python /home/ubuntu/StarCloud/starcloud/start.py  ; 啓動命令,能夠看出與手動在命令行啓動的命令是同樣的
 4 autostart = true  ; 在 supervisord 啓動的時候也自動啓動
 5 startsecs = 5  ; 啓動 5 秒後沒有異常退出,就看成已經正常啓動了
 6 autorestart = true  ; 程序異常退出後自動重啓
 7 startretries = 3  ; 啓動失敗自動重試次數,默認是 3
 8 user = ubuntu  ; 用哪一個用戶啓動
 9 redirect_stderr = true  ; 把 stderr 重定向到 stdout,默認 false
10 stdout_logfile_maxbytes = 20MB  ; stdout 日誌文件大小,默認 50MB
11 stdout_logfile_backups = 20  ; stdout 日誌文件備份數
12 stdout_logfile = /home/ubuntu/StarCloud/log/supervisor.log  ; stdout 日誌文件,須要注意當指定目錄不存在時沒法正常啓動,因此須要手動建立目錄(supervisord 會自動建立日誌文件)

supervisorctl客戶端控制檯:

    咱們能夠在這個控制檯查看當前運行的進程的狀態:status

    中止進程:stop

    啓動進程:start

    重啓進程:restart

    熱更新配置文件:reload

兩個日誌文件

  在配置中,咱們會有兩個日誌文件:

    1. 對supervisor的運行情況進行日誌記錄:/tmp/supervisord.log(默認),實際是在supervisord配置中logfile這裏進行配置
    2. 對所管理進程的應用程序進行日誌記錄:在program配置中的stdout_logfile對應的日誌文件。
相關文章
相關標籤/搜索