本篇文章為大家帶來了關於Python的相關知識,Supervisor 是一款Python 開發的進程管理系統,允許使用者監視和控制Linux 上的進程,能將一個普通命令列進程變成後台守護進程,異常退出時能自動重啟,下面一起來看一下,希望對大家有幫助。
【相關推薦:Python3影片教學 】
Supervisor 是一款Python 開發的進程管理系統,允許使用者監視和控制Linux 上的進程,能將一個普通命令列進程變為後台守護進程,異常退出時能自動重啟
Supervisor 支援Linux 和Mac,不支援Windows
本文系統為: centos,supervisor==4.2.4
pip3 install supervisor
安裝完成後,在Python bin目錄
下面會有這樣幾個檔案。
ls /usr/local/Python38/bin echo_supervisord_conf supervisorctl supervisord
註:由於python bin目錄是加入了環境變量,所以可以直接執行這幾個檔案。
1.先建立目錄,存放設定檔:mkdir supervisord
。
echo_supervisord_conf > supervisord/supervisord.conf
若報錯 -bash: /etc/supervisord.conf: Permission denied,需要切換到 root用戶。
2.建立子進程設定檔路徑
mkdir -p supervisor/conf.d
後面我們的任務,我們想把它當作守護進程,都需要一個設定文件,我們把這些設定檔放在conf.d目錄下面。
3.修改設定檔
vim supervisord/supervisord.conf
將最後一部分改為
[inclue] # 因为我这里是放在root用户目录下,也可以放其它目录 files=/root/supervisord/conf.d/*.conf
1.啟動supervisord
supervisord -c supervisord/supervisord.conf
這樣就把supervisord
啟動了,我們接下來可以把我們的任務交給他去守護了,停止了會幫我們自動重啟。
查看版本
supervisord -v
2.編寫簡單的Shell 腳本
vim supervisord/test.sh
內容如下
#!/bin/bash while : do echo `date '+%Y-%m-%d %H:%m:%S'` sleep 1 done
簡單運行,Ctrl C
退出
3.建立子程序設定檔
vim supervisor/conf.d/test.conf
test.conf
內容如下:
[program:test] command=sh /root/supervisord/test.sh priority=999 ; 相对启动优先级,数值越小越优先,默认为999 autostart=true ; 在supervisor启动时自动启动,默认为true autorestart=true ; 在意外退出时重新启动,默认为true startsecs=10 ; 子进程启动多少秒后状态为running则认为启动成功,默认为1 startretries=3 ; 尝试启动的最大次数,默认为3 exitcodes=0,2 ; 进程的预期退出代码列表,默认为0 stopsignal=QUIT ; 终止进程的信号,默认为TERM stopwaitsecs=10 ; 在SIGKILL之前等待的最大秒数,默认为10 user=root ; 在某用户下设置uid来启动程序,默认不切换用户 redirect_stderr=true ; 是否重定向stdout和stderr,默认为false stdout_logfile=/tmp/supervisor.stdout.log ; stdout的输出文件,默认为AUTO stdout_logfile_maxbytes=50MB ; stdout最大文件大小,默认为50MB stdout_logfile_backups=10 ; stdout文件备份数,设为0则不备份,默认为10
其實只需要設定3個參數,其它不用管:
command=sh /root/supervisord/test.sh
: 我們的子程序啟動指令;stdout_logfile=/tmp/supervisor. stdout.log
: 日誌;program:test
:行程名稱為test
,如果行程哪一天想停止啟動等,需要行程名稱;目前檔案目錄結構是這樣的:
yum install tree tree supervisord supervisord ├── conf.d │ └── test.conf ├── supervisord.conf └── test.sh
4.重新讀取配置並更新子程序
因為我們的supervisord
已經啟動了,可以透過ps -ef | grep supervisord.conf
查看。新增了子進程配置文件,需要把它重新載入進來:
先進入supervisord
目錄: cd supervisord
,否則執行下面命令會有問題。
supervisorctl reread
再查看進程狀態
supervisorctl status
結果:
test RUNNING pid 30278, uptime 1:29:41
#名為test
的這個程序已經作為守護程序在後台運行,我們來kill掉他:
kill 30278
再執行supervisorctl status
,會發現狀態立馬由starting
,不一會變成running
,那麼supervisord
的作用已經很明顯了,可以自動幫我們自動監控任務。
註:子程序的新增、刪除、啟動、停止相關指令,請見附錄。
web介面沒多大用處,就是如果想啟動、暫停進程是,不需要敲指令而已。
vim supervisord.conf
取消註解
[inet_http_server] port=*:9001 ; 此处改为*便于调试
重啟supervisord
supervisorctl reload
瀏覽器存取:linux_ip:9001.
##附錄:supervisorctl 常用指令新增某設定文件,重新載入supervisorctl reread改變某設定文件,重新載入
supervisorctl update重啟supervisord
supervisorctl reload查看所有進程狀態
supervisorctl status查看指定進程狀態
supervisorctl status <name>啟動所有子程序
supervisorctl start all啟動指定子程序
supervisorctl start <name>重啟所有子程序
supervisorctl restart all重啟指定子程序
supervisorctl restart <name>停止所有子進程
supervisorctl stop all停止指定子進程
supervisorctl stop <name>新增子進程到進程組
supervisorctl add <name>從進程組移除子進程,需要先stop 。注意:移除後,需要使用reread和update才能重新執行該進程
supervisorctl reomve <name>【相關推薦:
Python3影片教學 】
以上是帶你了解Python進程管理神器Supervisor的詳細內容。更多資訊請關注PHP中文網其他相關文章!