使用Supervisor管理程序

2021-10-11 21:28:09 字數 2658 閱讀 3102

supervisor是乙個c/s系統,它允許使用者在類unix系統上監控和管理一系列的程序。你可以把乙個程序以daemon的形式用supervisor來管理。

使用pip來安裝supervisor:

[root@test1 ~]# pip install supervisor
如果centos系統中沒用安裝pip,可以通過如下命令安裝pip:

[root@test1 ~]# yum -y install python-pip
supervisor的配置檔案需要手動執行命令來生成,如下:

[root@test1 ~]# echo_supervisord_conf > /etc/supervisord.conf
command=/bin/cat                 # 啟動程式時執行的命令;

directory=/tmp # 執行目錄,若有/home/test/test1.py,將directory設定成/home/test,則command只需設定成python test1.py。否則command必須設定成絕對路徑;

process_name=%(program_name)s # 程序啟動,使用program name作為程序名,預設值;

autostart=true # 隨supervisor啟動一起啟動;

startsecs=1 # 等待多長時間後認為程式啟動成功,預設為1;

startretries=3 # 啟動失敗時的重試次數,預設為3;

user=root # 以root身份執行程式;

priority=999 # 優先順序。值越高,最後啟動,最先被關閉,預設值999。

supervisor有兩個可執行程式 :supervisord 和 supervisorctl。

使用supervisor管理乙個python flask程式hello.py:

[program:flasky]

directory=/opt/flasky/

command=/opt/flasky/venv/bin/python hello.py runserver --host 192.168.1.101 -p 8080

autostart=true

startsecs=10

startretries=2

user=root

stderr_logfile=/tmp/flasky-error.log

stdout_logfile=/tmp/flasky-error.log

[root@test1 ~]# /usr/bin/supervisord -c /etc/supervisord.conf
[root@test1 ~]# /usr/bin/supervisorctl status

flasky starting

[root@test1 ~]# /usr/bin/supervisorctl status

flasky running pid 46778, uptime 0:00:10

[root@test1 ~]# /usr/bin/supervisorctl status

flasky running pid 46778, uptime 0:00:13

supervisorctl status                # 檢視supervisor管理程序的狀態;

supervisorctl stop programname # 用來關閉某個程序,programname指上例中的flasky;

supervisorctl start programname # 用來啟動某個程序;

supervisorctl restart programname # 用來重啟某個程序;

supervisorctl stop all # 關閉所有的程序;

supervisorctl reload # 停止所有程序,載入最新的配置檔案,並根據最新的配置啟動、管理程序;

supervisorctl update # 根據最新的配置檔案,啟動新配置的程序或重啟配置有變化的程序,沒有改動過的程序不會受到影響;

supervisorctl shutdown # 關閉supervisor服務。

error: , : file:
這時可以在執行supervisorctl時通過-c選項指定配置檔案的位置:

[root@test1 ~]# /usr/bin/supervisorctl -c /etc/supervisord.conf status

使用supervisor 管理swoft程序

專案中遇到有些指令碼需要通過後台程序執行,保證不被異常中斷,之前都是通過nohup screen來實現,帶著能否做乙個start stop restart reload的服務啟動的想法找到裡supervisor。關於supervisor的介紹在網上大致搜尋總結如下 supervisor是用pytho...

使用supervisor管理lnmp

supervisor是用python開發的乙個client server服務,是linux unix系統下的乙個程序管理工具,不支援windows系統。它可以很方便的監聽 啟動 停止 重啟乙個或多個程序。用supervisor管理的程序,當乙個程序意外被殺死,supervisort監聽到程序死後,會...

supervisor程序管理簡單使用

好久沒寫部落格了,本人喜歡私下研究和總結技術,但是並不太喜歡發表供給其他人,使用程序管理部署celery分布式爬蟲專案已經使用了很久了,今天記錄下使用過的技術。希望以後能常寫部落格。簡單介紹 supervisor是乙個程序控制系統,python語言開發,目前只支援python2.7.可以監控可控制程...