Supervisor的作用與配置

supervisor

supervisor管理進(jìn)程,是通過(guò)fork/exec的方式將這些被管理的進(jìn)程當(dāng)作supervisor的子進(jìn)程來(lái)啟動(dòng)悦荒,所以我們只需要將要管理進(jìn)程的可執(zhí)行文件的路徑添加到supervisor的配置文件中就好了。此時(shí)被管理進(jìn)程被視為supervisor的子進(jìn)程搬味,若該子進(jìn)程異常中斷,則父進(jìn)程可以準(zhǔn)確的獲取子進(jìn)程異常中斷的信息身腻,通過(guò)在配置文件中設(shè)置autostart=ture,可以實(shí)現(xiàn)對(duì)異常中斷的子進(jìn)程的自動(dòng)重啟嘀趟。


安裝supervisor

$ sudo apt-get install supervisor

配置文件

安裝完supervisor后,輸入以下命令可得到配置文件:

$ echo_supervisord_conf

或者:

$ cat /etc/supervisord/supervisord.conf

配置文件如下(分號(hào)牛隅;表示注釋):

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; 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.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf

以上配置文件用到幾個(gè)部分:

  • [unix_http_server]:這部分設(shè)置HTTP服務(wù)器監(jiān)聽(tīng)的UNIX domain socket
    • file: 指向UNIX domain socket酌泰,即file=/var/run/supervisor.sock
    • chmod:?jiǎn)?dòng)時(shí)改變supervisor.sock的權(quán)限
  • [supervisord]:與supervisord有關(guān)的全局配置需要在這部分設(shè)置
    • logfile: 指向記錄supervisord進(jìn)程的log文件
    • pidfile:pidfile保存子進(jìn)程的路徑
    • childlogdir:子進(jìn)程log目錄設(shè)為AUTO的log目錄
  • [supervisorctl]:
    • serverurl:進(jìn)入supervisord的URL, 對(duì)于UNIX domain sockets, 應(yīng)設(shè)為 unix:///absolute/path/to/file.sock
  • [include]:如果配置文件包含該部分陵刹,則該部分必須包含一個(gè)files鍵:
    • files:包含一個(gè)或多個(gè)文件,這里包含了/etc/supervisor/conf.d/目錄下所有的.conf文件也糊,可以在該目錄下增加我們自己的配置文件,在該配置文件中增加[program:x]部分狸剃,用來(lái)運(yùn)行我們自己的程序狗热,如下:
  • [program:x]:配置文件必須包括至少一個(gè)program钞馁,x是program名稱,必須寫上僧凰,不能為空
    • command:包含一個(gè)命令,當(dāng)這個(gè)program啟動(dòng)時(shí)執(zhí)行
    • directory:執(zhí)行子進(jìn)程時(shí)supervisord暫時(shí)切換到該目錄
    • user:賬戶名
    • startsecs:進(jìn)程從STARING狀態(tài)轉(zhuǎn)換到RUNNING狀態(tài)program所需要保持運(yùn)行的時(shí)間(單位:秒)
    • redirect_stderr:如果是true膝擂,則進(jìn)程的stderr輸出被發(fā)送回其stdout文件描述符上的supervisord
    • stdout_logfile:將進(jìn)程stdout輸出到指定文件
    • stdout_logfile_maxbytes:stdout_logfile指定日志文件最大字節(jié)數(shù)隙弛,默認(rèn)為50MB架馋,可以加KB全闷、MB或GB等單位
    • stdout_logfile_backups:要保存的stdout_logfile備份的數(shù)量

示例如下,在目錄/etc/supervisor/conf.d/下創(chuàng)建awesome.conf总珠,并加入:

;/etc/supervisor/conf.d/awesome.conf

[program:awesome]

command     = /usr/bin/env python3 /srv/awesome/www/app.py
directory   = /srv/awesome/www
user        = www-data
startsecs   = 3

redirect_stderr         = true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups  = 10
stdout_logfile          = /srv/awesome/log/app.log

配置完后钓瞭,先進(jìn)入/srv/awesome/目錄下創(chuàng)建log目錄,之后啟動(dòng)supervisor:

$ sudo supervisord -c supervisor.conf  

supervisor基本命令(后四個(gè)命令可以省略“-c supervisor.conf”):

supervisord -c supervisor.conf                       通過(guò)配置文件啟動(dòng)supervisor
supervisorctl -c supervisor.conf status              查看狀態(tài)
supervisorctl -c supervisor.conf reload              重新載入配置文件
supervisorctl -c supervisor.conf start [all]|[x]     啟動(dòng)所有/指定的程序進(jìn)程
supervisorctl -c supervisor.conf stop [all]|[x]      關(guān)閉所有/指定的程序進(jìn)程 

執(zhí)行服務(wù)(運(yùn)行app.py):

$ sudo supervisorctl start awesome

如果supervisor遇到錯(cuò)誤山涡,可以在/var/log/supervisor/supervisord.log中查看日志唆迁;
如果app運(yùn)行出現(xiàn)問(wèn)題,可以在/srv/awesome/log/app.log中查看日志唐责。

綜合應(yīng)用鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鼠哥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肴盏,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厉萝,居然都是意外死亡榨崩,警方通過(guò)查閱死者的電腦和手機(jī)章母,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乳怎,“玉大人,你說(shuō)我怎么就攤上這事蚪缀。” “怎么了询枚?”我有些...
    開(kāi)封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)刷后。 經(jīng)常有香客問(wèn)我,道長(zhǎng)尝胆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任含衔,我火速辦了婚禮嘶炭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眨猎。我一直安慰自己,他們只是感情好睡陪,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著兰迫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涡拘。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天鳄乏,我揣著相機(jī)與錄音,去河邊找鬼橱野。 笑死,一個(gè)胖子當(dāng)著我的面吹牛水援,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜗元,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼许帐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起成畦,我...
    開(kāi)封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎框仔,沒(méi)想到半個(gè)月后拄养,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體离斩,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘪匿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了核偿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顽染,死狀恐怖漾岳,靈堂內(nèi)的尸體忽然破棺而出粉寞,到底是詐尸還是另有隱情,我是刑警寧澤唧垦,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站野芒,受9級(jí)特大地震影響蓄愁,放射性物質(zhì)發(fā)生泄漏狞悲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一摇锋、第九天 我趴在偏房一處隱蔽的房頂上張望站超。 院中可真熱鬧,春花似錦死相、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肮柜。三九已至,卻和暖如春审洞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芒澜。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留南吮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓旨袒,卻偏偏與公主長(zhǎng)得像术辐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辉词,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

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