linux 程序管理工具:supervisor
supervisor簡介
在linux伺服器中,有時候我們需要乙個程序需要可靠的在後台執行,並且能夠監控程序狀態,在意外結束時能夠自動重啟等。此時就可以使用supervisor。
supervisor 是使用python開發的一套通用的程序管理程式,能夠將乙個普通的命令列程序變成後台的守護程序,並且監控程序的狀態,異常退出時能夠自動重啟。
安裝supervisor
在ubuntu中可以使用apt-get來安裝:
sudo apt
-get
install supervisor
如果安裝緩慢,可以更換中科大的源:
配置
安裝完成以後,我們需要編寫乙個配置檔案,讓supervisor來管理它。每個程序的配置檔案都可以單獨拆分,放在/etc/supervisor/conf.d/目錄下,以.conf作為副檔名。
# 首先進入/etc/supervisor/conf.d目錄
/etc
/supervisor
/conf.d
# 使用supervisor自帶的命令生成模板
echo_supervisord_conf
>
foo.
conf
編輯模板,在開頭新增以下內容:
[
program
:foo
]command
=/bin/
cat
command : 命令
directory : 程序的當前目錄
user : 程序執行的使用者身份
詳細配置說明:
;*為必須填寫項
;*[program
:應用名稱]
[program
:cat
];*命令路徑,如果使用
python
啟動的程式應該為
python
/home
/test.py
,;不建議放入/
home
/user
/,對於非
user
使用者一般情況下是不能訪問
command
=/bin/
cat;當
numprocs為1
時,process_name
=%(program_name)s
;當numprocs
>=
2時,%(
program_name)s_
%(process_num
)02d
process_name
=%(program_name)s
;程序數量
numprocs=1
;執行目錄,若有/
home
/supervisor_test
/test1.py
;將directory
設定成/
home
/supervisor_test
;則command
只需設定成
python test1.py
;否則command
必須設定成絕對執行目錄
directory
=/tmp
;掩碼:--- -w- -w-, 轉換後rwx r-x w-x
umask=022
;優先順序,值越高,最後啟動,最先被關閉,預設值999
priority=999
;如果是true,當supervisor啟動時,程式將會自動啟動
autostart=true
;*自動重啟
autorestart=true
;啟動延時執行,預設1秒
startsecs=10
;啟動嘗試次數,預設3次
startretries=3
;當退出碼是0,2時,執行重啟,預設值0,2
exitcodes=0,2
;停止訊號,預設term
;中斷:int(類似於ctrl+c)(kill -int pid),退出後會將寫檔案或日誌(推薦)
;終止:term(kill -term pid)
;掛起:hup(kill -hup pid),注意與ctrl+z/
kill
-stop pid
不同;從容停止:
quit
(kill
-quit pid);
kill
,usr1
,usr2
其他見命令(
kill -l
),說明
1stopsignal
=term
stopwaitsecs=10
;*以root
使用者執行
user
=root
;重定向
redirect_stderr
=false
stdout_logfile
=/a/
path
stdout_logfile_maxbytes
=1mb
stdout_logfile_backups=10
stdout_capture_maxbytes
=1mb
stderr_logfile
=/a/
path
stderr_logfile_maxbytes
=1mb
stderr_logfile_backups=10
stderr_capture_maxbytes
=1mb
;環境變數設定
environment=a
="1",b
="2"
serverurl
=auto
啟動
如果編輯預設的supervisor.conf,則需要重啟supervisor使配置檔案生效:
supervisorctl reload
然後執行下面的命令啟動程序:
supervisorctl start foo
如果執行出現如下錯誤:
unix
:///var/run/supervisor.sock no such file
可以執行下面的命令,然後再次啟動:
sudo touch /var/run/supervisor.sock看到如下資訊,說明執行成功:sudo chmod 777 /var/run/supervisor.sock
sudo service supervisor restart
foo: started也可以輸入
supervisorctl
進入supervisor的控制台介面,同樣能夠看到:
foo running pid 6665, uptime 0:08:08在supervisor的控制台輸入help可以獲取幫助資訊,輸入status可以獲取當前執行的程序資訊,輸入exit可以退出supervisor的控制台介面。 關閉
使用下面的命令就可以關閉supervisor啟動的程序:
supervisorctl stop foo
可以看到輸出資訊:
foo: stopped
常用命令
更新新的配置到supervisord重新啟動配置中的所有程式supervisorctl update
啟動某個程序(program_name=你配置中寫的程式名稱)supervisorctl reload
檢視正在守候的程序(同時進入控制台)supervisorctl start program_name
停止某一程序 (program_name=你配置中寫的程式名稱)supervisorctl
重啟某一程序 (program_name=你配置中寫的程式名稱)pervisorctl stop program_name
停止全部程序supervisorctl restart program_name
supervisorctl stop all
程序管理工具
程序管理 pstree作用是以程序樹的形式顯示程序 例如 pstree 8123 顯示程序名不顯示各個程序號 pstree p 8123 顯示程序名稱及各級程序的程序號 ps作用是顯示當前所有執行程序的詳細資訊 例如 ps aux 顯示所有包含其他使用者的行程 ps aux 選項 a 顯示包括所有終...
Linux程序管理工具Supervisor
supervisor是用python開發的一套通用的程序管理程式,能將乙個普通的命令列程序變為後台daemon,並監控程序狀態,異常退出時能自動重啟。它是通過fork exec的方式把這些被管理的程序當作supervisor的子程序來啟動,這樣只要在supervisor的配置檔案中,把要管理的程序的...
守護程序管理工具
1.文字程序管理工具 ntsysv是乙個使用者管理自動執行的守護程序的文字使用者介面工具。2.命令列介面 cli 工具 可以使用chkconfig命令檢查,設定系統的各種服務。此命令實際上是通過操作 etc rc 0 6 d目錄下的符號鏈結檔案對系統的各種服務進行管理。chkconfig命令具有如下...