supervisor 使用教程

1.介紹

supervisor是一個(gè)進(jìn)程管理工具羡亩。

用途就是有一個(gè)進(jìn)程需要每時(shí)每刻不斷的跑,但是這個(gè)進(jìn)程又有可能由于各種原因有可能中斷状勤。當(dāng)進(jìn)程中斷的時(shí)候我希望能自動(dòng)重新啟動(dòng)它鞋怀,此時(shí),我就需要使用到了supervisor荧降。

這個(gè)工具主要就兩個(gè)命令:

supervisord : supervisor的服務(wù)器端部分接箫,啟動(dòng)supervisor就是運(yùn)行這個(gè)命令

supervisorctl:啟動(dòng)supervisor的命令行窗口

2.安裝

推薦方法pip install


pip install  supervisor

3.使用案例

使用supervisor 啟動(dòng) python main.py 文件


vim /etc/supervisor/conf.d/demo.conf

添加以下內(nèi)容


[program:demo]        #項(xiàng)目名稱為demo

command=python main.py          #運(yùn)行腳本

stderr_logfile=/var/log/supervisor/error_demo.log        #錯(cuò)誤日志

stdout_logfile=/var/log/supervisor/demo.log        #輸出

directory=/root/demo/        #項(xiàng)目路徑

autostart=true        #當(dāng)supervisor 啟動(dòng)時(shí)會(huì)自動(dòng)啟動(dòng)

user=root        #用戶

autorestart=true        #自動(dòng)重啟

更新配置


supervisorctl update        

查看進(jìn)程運(yùn)行狀態(tài)


supervisorctl status        

4.配置文件詳解

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; socket 路徑
 
;chmod=0700                 ; socket 文件的權(quán)限
;chown=nobody:nogroup       ; socket 所屬用戶及組
;username=user              ; 用戶名
;password=123               ; 密碼
 
;[inet_http_server]         ; 是否啟用服務(wù),默認(rèn)是關(guān)閉的(啟用的話可以看到supervisor 管理的服務(wù)狀態(tài))
;port=127.0.0.1:9001        ; 監(jiān)聽的IP及端口
;username=user              ; 用戶名
;password=123               ; 密碼
 
[supervisord]               ; supervisord 全局配置
logfile=/var/log/supervisor/supervisord.log  ; supervisor 日志路徑
logfile_maxbytes=50MB       ; 單個(gè)日志文件最大數(shù)
logfile_backups=10          ; 保留多少個(gè)日志文件(默認(rèn)10個(gè))
loglevel=info               ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; pid 文件路徑
nodaemon=false              ; 啟動(dòng)是否丟到前臺(tái)朵诫,設(shè)置為false 辛友,表示以daemon 的方式啟動(dòng)
minfds=1024                 ; 最小文件打開數(shù),對應(yīng)系統(tǒng)limit.conf 中的nofile ,默認(rèn)最小為1024,最大為4096
minprocs=200                ; 最小的進(jìn)程打開數(shù)废累,對應(yīng)系統(tǒng)的limit.conf 中的nproc,默認(rèn)為200
;umask=022                  ; (process file creation umask;default 022)
;user=chrism                 ; 啟動(dòng)supervisord 服務(wù)的用戶邓梅,默認(rèn)為root
;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
;directory=/tmp              ; 這里的目錄指的是服務(wù)的工作目錄
;nocleanup=true              ; 
;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)
;environment=KEY=value       ; (key value pairs to add to environment)
;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)
 
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
 
[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available
 
; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.
 
;[program:theprogramname]      ; 定義一個(gè)守護(hù)進(jìn)程 ,比如下面的elasticsearch 
;command=/bin/cat              ; 啟動(dòng)程序使用的命令邑滨,可以是絕對路徑或者相對路徑
;process_name=%(program_name)s ; 一個(gè)python字符串表達(dá)式日缨,用來表示supervisor進(jìn)程啟動(dòng)的這個(gè)的名稱,默認(rèn)值是%(program_name)s
;numprocs=1                    ; Supervisor啟動(dòng)這個(gè)程序的多個(gè)實(shí)例掖看,如果numprocs>1匣距,則process_name的表達(dá)式必須包含%(process_num)s,默認(rèn)是1
;directory=/tmp                ; supervisord在生成子進(jìn)程的時(shí)候會(huì)切換到該目錄
;umask=022                     ; umask for process (default None)
;priority=999                  ; 權(quán)重哎壳,可以控制程序啟動(dòng)和關(guān)閉時(shí)的順序毅待,權(quán)重越低:越早啟動(dòng),越晚關(guān)閉归榕。默認(rèn)值是999
;autostart=true                ; 如果設(shè)置為true尸红,當(dāng)supervisord啟動(dòng)的時(shí)候,進(jìn)程會(huì)自動(dòng)啟動(dòng)
;autorestart=true              ; 設(shè)置為隨 supervisord 重啟而重啟刹泄,值可以是false外里、true、unexpected特石。false:進(jìn)程不會(huì)自動(dòng)重啟
;startsecs=10                  ; 程序啟動(dòng)后等待多長時(shí)間后才認(rèn)為程序啟動(dòng)成功盅蝗,默認(rèn)是10秒
;startretries=3                ; supervisord嘗試啟動(dòng)一個(gè)程序時(shí)嘗試的次數(shù)。默認(rèn)是3
;exitcodes=0,2                 ; 一個(gè)預(yù)期的退出返回碼姆蘸,默認(rèn)是0,2风科。
;stopsignal=QUIT               ; 當(dāng)收到stop請求的時(shí)候,發(fā)送信號給程序乞旦,默認(rèn)是TERM信號,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2
;stopwaitsecs=10               ; 在操作系統(tǒng)給supervisord發(fā)送SIGCHILD信號時(shí)等待的時(shí)間
;user=chrism                   ; 如果supervisord以root運(yùn)行题山,則會(huì)使用這個(gè)設(shè)置用戶啟動(dòng)子程序
;redirect_stderr=true          ; 如果設(shè)置為true兰粉,進(jìn)程則會(huì)把標(biāo)準(zhǔn)錯(cuò)誤輸出到supervisord后臺(tái)的標(biāo)準(zhǔn)輸出文件描述符
;stdout_logfile=/a/path        ; 把進(jìn)程的標(biāo)準(zhǔn)輸出寫入文件中,如果stdout_logfile沒有設(shè)置或者設(shè)置為AUTO顶瞳,則supervisor會(huì)自動(dòng)選擇一個(gè)文件位置
;stdout_logfile_maxbytes=1MB   ; 標(biāo)準(zhǔn)輸出log文件達(dá)到多少后自動(dòng)進(jìn)行輪轉(zhuǎn)玖姑,單位是KB、MB慨菱、GB焰络。如果設(shè)置為0則表示不限制日志文件大小
;stdout_logfile_backups=10     ; 標(biāo)準(zhǔn)輸出日志輪轉(zhuǎn)備份的數(shù)量,默認(rèn)是10符喝,如果設(shè)置為0闪彼,則不備份
;stdout_capture_maxbytes=1MB   ; 當(dāng)進(jìn)程處于stderr capture mode模式的時(shí)候,寫入FIFO隊(duì)列的最大bytes值,單位可以是KB畏腕、MB缴川、GB
;stdout_events_enabled=false   ; 如果設(shè)置為true,當(dāng)進(jìn)程在寫它的stderr
;stderr_logfile=/a/path        ; 把進(jìn)程的錯(cuò)誤日志輸出一個(gè)文件中描馅,除非redirect_stderr參數(shù)被設(shè)置為true
;stderr_logfile_maxbytes=1MB   ; 錯(cuò)誤log文件達(dá)到多少后自動(dòng)進(jìn)行輪轉(zhuǎn)把夸,單位是KB、MB铭污、GB恋日。如果設(shè)置為0則表示不限制日志文件大小
;stderr_logfile_backups=10     ; 錯(cuò)誤日志輪轉(zhuǎn)備份的數(shù)量,默認(rèn)是10嘹狞,如果設(shè)置為0岂膳,則不備份
;stderr_capture_maxbytes=1MB   ; 當(dāng)進(jìn)程處于stderr capture mode模式的時(shí)候,寫入FIFO隊(duì)列的最大bytes值刁绒,單位可以是KB闷营、MB、GB
;stderr_events_enabled=false   ; 如果設(shè)置為true知市,當(dāng)進(jìn)程在寫它的stderr到文件描述符的時(shí)候傻盟,PROCESS_LOG_STDERR事件會(huì)被觸發(fā)
;environment=A=1,B=2           ; 一個(gè)k/v對的list列表
;serverurl=AUTO                ; 是否允許子進(jìn)程和內(nèi)部的HTTP服務(wù)通訊,如果設(shè)置為AUTO嫂丙,supervisor會(huì)自動(dòng)的構(gòu)造一個(gè)url
 

5.常用操作命令

停止supervisor服務(wù)

service supervisor stop 

啟動(dòng)supervisor服務(wù)

service supervisor start 

關(guān)閉所有任務(wù)

supervisorctl shutdown

啟動(dòng)或停止服務(wù)

supervisorctl stop|start program_name

查看所有任務(wù)狀態(tài)

supervisorctl status

更新配置并運(yùn)行

supervisorctl update
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娘赴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跟啤,更是在濱河造成了極大的恐慌诽表,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隅肥,死亡現(xiàn)場離奇詭異竿奏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)腥放,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門泛啸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秃症,你說我怎么就攤上這事候址。” “怎么了种柑?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵岗仑,是天一觀的道長。 經(jīng)常有香客問我聚请,道長荠雕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮舞虱,結(jié)果婚禮上欢际,老公的妹妹穿的比我還像新娘。我一直安慰自己矾兜,他們只是感情好损趋,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著椅寺,像睡著了一般浑槽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上返帕,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天桐玻,我揣著相機(jī)與錄音,去河邊找鬼荆萤。 笑死镊靴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的链韭。 我是一名探鬼主播偏竟,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敞峭!你這毒婦竟也來了踊谋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤旋讹,失蹤者是張志新(化名)和其女友劉穎殖蚕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沉迹,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睦疫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鞭呕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笼痛。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖琅拌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摘刑,我是刑警寧澤进宝,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站枷恕,受9級特大地震影響党晋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一未玻、第九天 我趴在偏房一處隱蔽的房頂上張望灾而。 院中可真熱鬧,春花似錦扳剿、人聲如沸旁趟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锡搜。三九已至,卻和暖如春瞧掺,著一層夾襖步出監(jiān)牢的瞬間耕餐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工辟狈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肠缔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓哼转,卻偏偏與公主長得像明未,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子释簿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容