Linux 程序管理工具 supervisor

2021-07-30 15:21:48 字數 4433 閱讀 1360

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
重新啟動配置中的所有程式

supervisorctl reload
啟動某個程序(program_name=你配置中寫的程式名稱)

supervisorctl start program_name
檢視正在守候的程序(同時進入控制台)

supervisorctl
停止某一程序 (program_name=你配置中寫的程式名稱)

pervisorctl stop program_name
重啟某一程序 (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命令具有如下...