Supervisor概述
supervisor是一個 Client/Server模式的系統(tǒng)苫昌,允許用戶在類unix操作系統(tǒng)上監(jiān)視和控制多個進程货葬,或者可以說是多個程序因篇。supervisor與launchd,daemontools歉备,runit等程序有著相同的功能瓦戚,與其中某些程序不同的是,它并不作為“id 為 1的進程”而替代init摸吠。相反榕订,它用于控制應(yīng)用程序,像啟動其它程序一樣蜕便,通俗理解就是劫恒,把Supervisor服務(wù)管理的進程程序,它們作為supervisor的子進程來運行轿腺,而supervisor是父進程两嘴。supervisor來監(jiān)控管理子進程的啟動關(guān)閉和異常退出后的自動啟動。
Supervisor組成部分
1)supervisord: 服務(wù)守護進程
supervisor服務(wù)器的進程名是supervisord族壳。它主要負(fù)責(zé)在自己的調(diào)用中啟動子程序憔辫,響應(yīng)客戶端的命令,重新啟動崩潰或退出的進程仿荆,記錄其子進程stdout和stderr的輸出贰您,以及生成和處理對應(yīng)于子進程生命周期中的"event"服務(wù)器進程使用的配置文件坏平,通常路徑存放在/etc/supervisord.confa中。此配置文件是INI格式的配置文件锦亦。
-
supervisorctl:命令行客戶端
supervisor命令行的客戶端名稱是supervisorctl舶替。它為supervisord提供了一個類似于shell的交互界面。使用supervisorctl杠园,用戶可以查看不同的supervisord進程列表顾瞪,獲取控制子進程的狀態(tài),如停止和啟動子進程 -
Web Server:提供與supervisorctl功能相當(dāng)?shù)腤EB操作界面
一個可以通過Web界面來查看和控制進程的狀態(tài)抛蚁,默認(rèn)監(jiān)聽在9091上陈醒。 -
XML-RPC Interface:XML-RPC接口
supervisor用于控制的XML-RPC接口
Supervisor安裝
$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
$ rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 通過yum方式安裝supervisor
$ yum install -y supervisor
# 開機自啟動
$ systemctl enable supervisord
# 啟動
$ systemctl start supervisord
Supervisor配置文件說明
[unix_http_server]
file=/tmp/supervisor.sock ; socket文件的路徑,supervisorctl用XML_RPC和supervisord通信就是通過它進行
的瞧甩。如果不設(shè)置的話钉跷,supervisorctl也就不能用了
不設(shè)置的話,默認(rèn)為none肚逸。 非必須設(shè)置
;chmod=0700 ; 這個簡單尘应,就是修改上面的那個socket文件的權(quán)限為0700
不設(shè)置的話,默認(rèn)為0700吼虎。 非必須設(shè)置
;chown=nobody:nogroup ; 這個一樣,修改上面的那個socket文件的屬組為user.group
不設(shè)置的話苍鲜,默認(rèn)為啟動supervisord進程的用戶及屬組思灰。非必須設(shè)置
;username=user ; 使用supervisorctl連接的時候,認(rèn)證的用戶
不設(shè)置的話混滔,默認(rèn)為不需要用戶洒疚。 非必須設(shè)置
;password=123 ; 和上面的用戶名對應(yīng)的密碼,可以直接使用明碼坯屿,也可以使用SHA加密
如:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d
默認(rèn)不設(shè)置油湖。。领跛。非必須設(shè)置
;[inet_http_server] ; 偵聽在TCP上的socket乏德,Web Server和遠(yuǎn)程的supervisorctl都要用到他
不設(shè)置的話,默認(rèn)為不開啟吠昭。非必須設(shè)置
;port=127.0.0.1:9001 ; 這個是偵聽的IP和端口喊括,偵聽所有IP用 :9001或*:9001。
這個必須設(shè)置矢棚,只要上面的[inet_http_server]開啟了郑什,就必須設(shè)置它
;username=user ; 這個和上面的uinx_http_server一個樣。非必須設(shè)置
;password=123 ; 這個也一個樣蒲肋。非必須設(shè)置
[supervisord] ;這個主要是定義supervisord這個服務(wù)端進程的一些參數(shù)的
這個必須設(shè)置蘑拯,不設(shè)置钝满,supervisor就不用干活了
logfile=/tmp/supervisord.log ; 這個是supervisord這個主進程的日志路徑,注意和子進程的日志不搭嘎申窘。
默認(rèn)路徑$CWD/supervisord.log弯蚜,$CWD是當(dāng)前目錄。偶洋。非必須設(shè)置
logfile_maxbytes=50MB ; 這個是上面那個日志文件的最大的大小熟吏,當(dāng)超過50M的時候,會生成一個新的日
志文件玄窝。當(dāng)設(shè)置為0時牵寺,表示不限制文件大小
默認(rèn)值是50M,非必須設(shè)置恩脂。
logfile_backups=10 ; 日志文件保持的數(shù)量帽氓,上面的日志文件大于50M時,就會生成一個新文件俩块。文件
數(shù)量大于10時黎休,最初的老文件被新文件覆蓋,文件數(shù)量將保持為10
當(dāng)設(shè)置為0時玉凯,表示不限制文件的數(shù)量势腮。
默認(rèn)情況下為10。漫仆。捎拯。非必須設(shè)置
loglevel=info ; 日志級別,有critical, error, warn, info, debug, trace, or blather等
默認(rèn)為info盲厌。署照。。非必須設(shè)置項
pidfile=/tmp/supervisord.pid ; supervisord的pid文件路徑吗浩。
默認(rèn)為$CWD/supervisord.pid建芙。。懂扼。非必須設(shè)置
nodaemon=false ; 如果是true禁荸,supervisord進程將在前臺運行
默認(rèn)為false,也就是后臺以守護進程運行阀湿。屡限。。非必須設(shè)置
minfds=1024 ; 這個是最少系統(tǒng)空閑的文件描述符炕倘,低于這個值supervisor將不會啟動钧大。
系統(tǒng)的文件描述符在這里設(shè)置cat /proc/sys/fs/file-max
默認(rèn)情況下為1024。罩旋。啊央。非必須設(shè)置
minprocs=200 ; 最小可用的進程描述符眶诈,低于這個值supervisor也將不會正常啟動。
ulimit -u這個命令瓜饥,可以查看linux下面用戶的最大進程數(shù)
默認(rèn)為200逝撬。。乓土。非必須設(shè)置
;umask=022 ; 進程創(chuàng)建文件的掩碼
默認(rèn)為022宪潮。。非必須設(shè)置項
;user=chrism ; 這個參數(shù)可以設(shè)置一個非root用戶趣苏,當(dāng)我們以root用戶啟動supervisord之后狡相。
我這里面設(shè)置的這個用戶,也可以對supervisord進行管理
默認(rèn)情況是不設(shè)置食磕。尽棕。。非必須設(shè)置項
;identifier=supervisor ; 這個參數(shù)是supervisord的標(biāo)識符彬伦,主要是給XML_RPC用的滔悉。當(dāng)你有多個
supervisor的時候,而且想調(diào)用XML_RPC統(tǒng)一管理单绑,就需要為每個
supervisor設(shè)置不同的標(biāo)識符了
默認(rèn)是supervisord回官。。搂橙。非必需設(shè)置
;directory=/tmp ; 這個參數(shù)是當(dāng)supervisord作為守護進程運行的時候歉提,設(shè)置這個參數(shù)的話,啟動
supervisord進程之前份氧,會先切換到這個目錄
默認(rèn)不設(shè)置。弯屈。蜗帜。非必須設(shè)置
;nocleanup=true ; 這個參數(shù)當(dāng)為false的時候,會在supervisord進程啟動的時候资厉,把以前子進程
產(chǎn)生的日志文件(路徑為AUTO的情況下)清除掉厅缺。有時候咱們想要看歷史日志,當(dāng)
然不想日志被清除了宴偿。所以可以設(shè)置為true
默認(rèn)是false湘捎,有調(diào)試需求的同學(xué)可以設(shè)置為true。窄刘。窥妇。非必須設(shè)置
;childlogdir=/tmp ; 當(dāng)子進程日志路徑為AUTO的時候,子進程日志文件的存放路徑娩践。
默認(rèn)路徑是這個東西活翩,執(zhí)行下面的這個命令看看就OK了烹骨,處理的東西就默認(rèn)路徑
python -c "import tempfile;print tempfile.gettempdir()"
非必須設(shè)置
;environment=KEY="value" ; 這個是用來設(shè)置環(huán)境變量的,supervisord在linux中啟動默認(rèn)繼承了linux的
環(huán)境變量材泄,在這里可以設(shè)置supervisord進程特有的其他環(huán)境變量沮焕。
supervisord啟動子進程時,子進程會拷貝父進程的內(nèi)存空間內(nèi)容拉宗。 所以設(shè)置的
這些環(huán)境變量也會被子進程繼承峦树。
小例子:environment=name="haha",age="hehe"
默認(rèn)為不設(shè)置。旦事。魁巩。非必須設(shè)置
;strip_ansi=false ; 這個選項如果設(shè)置為true,會清除子進程日志中的所有ANSI 序列族檬。什么是ANSI
序列呢歪赢?就是我們的\n,\t這些東西。
默認(rèn)為false单料。埋凯。。非必須設(shè)置
; 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] ;這個選項是給XML_RPC用的扫尖,當(dāng)然你如果想使用supervisord或者web server 這
個選項必須要開啟的
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl] ;這個主要是針對supervisorctl的一些配置
serverurl=unix:///tmp/supervisor.sock ; 這個是supervisorctl本地連接supervisord的時候白对,本地UNIX socket
路徑,注意這個是和前面的[unix_http_server]對應(yīng)的
默認(rèn)值就是unix:///tmp/supervisor.sock换怖。甩恼。非必須設(shè)置
;serverurl=http://127.0.0.1:9001 ; 這個是supervisorctl遠(yuǎn)程連接supervisord的時候,用到的TCP socket路徑
注意這個和前面的[inet_http_server]對應(yīng)
默認(rèn)就是http://127.0.0.1:9001沉颂。条摸。。非必須項
;username=chris ; 用戶名
默認(rèn)空铸屉。钉蒲。非必須設(shè)置
;password=123 ; 密碼
默認(rèn)空。彻坛。非必須設(shè)置
;prompt=mysupervisor ; 輸入用戶名密碼時候的提示符
默認(rèn)supervisor顷啼。。非必須設(shè)置
;history_file=~/.sc_history ; 這個參數(shù)和shell中的history類似昌屉,我們可以用上下鍵來查找前面執(zhí)行過的命令
默認(rèn)是no file的钙蒙。。所以我們想要有這種功能间驮,必須指定一個文件躬厌。。竞帽。非
必須設(shè)置
; 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] ;這個就是咱們要管理的子進程了烤咧,":"后面的是名字偏陪,最好別亂寫和實際進程
有點關(guān)聯(lián)最好。這樣的program我們可以設(shè)置一個或多個煮嫌,一個program就是
要被管理的一個進程
;command=/bin/cat ; 這個就是我們的要啟動進程的命令路徑了笛谦,可以帶參數(shù)
例子:/home/test.py -a 'hehe'
有一點需要注意的是,我們的command只能是那種在終端運行的進程昌阿,不能是
守護進程饥脑。這個想想也知道了,比如說command=service httpd start懦冰。
httpd這個進程被linux的service管理了灶轰,我們的supervisor再去啟動這個命令
這已經(jīng)不是嚴(yán)格意義的子進程了。
這個是個必須設(shè)置的項
;process_name=%(program_name)s ; 這個是進程名刷钢,如果我們下面的numprocs參數(shù)為1的話笋颤,就不用管這個參數(shù)
了,它默認(rèn)值%(program_name)s也就是上面的那個program冒號后面的名字内地,
但是如果numprocs為多個的話伴澄,那就不能這么干了。想想也知道阱缓,不可能每個
進程都用同一個進程名吧非凌。
;numprocs=1 ; 啟動進程的數(shù)目。當(dāng)不為1時荆针,就是進程池的概念敞嗡,注意process_name的設(shè)置
默認(rèn)為1 。航背。非必須設(shè)置
;directory=/tmp ; 進程運行前喉悴,會前切換到這個目錄
默認(rèn)不設(shè)置。玖媚。箕肃。非必須設(shè)置
;umask=022 ; 進程掩碼,默認(rèn)none最盅,非必須
;priority=999 ; 子進程啟動關(guān)閉優(yōu)先級突雪,優(yōu)先級低的起惕,最先啟動涡贱,關(guān)閉的時候最后關(guān)閉
默認(rèn)值為999 。惹想。非必須設(shè)置
;autostart=true ; 如果是true的話问词,子進程將在supervisord啟動后被自動啟動
默認(rèn)就是true 。嘀粱。非必須設(shè)置
;autorestart=unexpected ; 這個是設(shè)置子進程掛掉后自動重啟的情況激挪,有三個選項辰狡,false,unexpected
和true。如果為false的時候垄分,無論什么情況下宛篇,都不會被重新啟動,
如果為unexpected薄湿,只有當(dāng)進程的退出碼不在下面的exitcodes里面定義的退
出碼的時候叫倍,才會被自動重啟。當(dāng)為true的時候豺瘤,只要子進程掛掉吆倦,將會被無
條件的重啟
;startsecs=1 ; 這個選項是子進程啟動多少秒之后,此時狀態(tài)如果是running坐求,則我們認(rèn)為啟
動成功了
默認(rèn)值為1 蚕泽。。非必須設(shè)置
;startretries=3 ; 當(dāng)進程啟動失敗后桥嗤,最大嘗試啟動的次數(shù)须妻。。當(dāng)超過3次后砸逊,supervisor將把
此進程的狀態(tài)置為FAIL
默認(rèn)值為3 璧南。。非必須設(shè)置
;exitcodes=0,2 ; 注意和上面的的autorestart=unexpected對應(yīng)师逸。司倚。exitcodes里面的定義的
退出碼是expected的。
;stopsignal=QUIT ; 進程停止信號篓像,可以為TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信號
默認(rèn)為TERM 动知。。當(dāng)用設(shè)定的信號去干掉進程员辩,退出碼會被認(rèn)為是expected
非必須設(shè)置
;stopwaitsecs=10 ; 這個是當(dāng)我們向子進程發(fā)送stopsignal信號后盒粮,到系統(tǒng)返回信息
給supervisord,所等待的最大時間奠滑。 超過這個時間丹皱,supervisord會向該
子進程發(fā)送一個強制kill的信號。
默認(rèn)為10秒宋税。摊崭。非必須設(shè)置
;stopasgroup=false ; 這個東西主要用于,supervisord管理的子進程杰赛,這個子進程本身還有
子進程呢簸。那么我們?nèi)绻麅H僅干掉supervisord的子進程的話,子進程的子進程
有可能會變成孤兒進程。所以咱們可以設(shè)置可個選項根时,把整個該子進程的
整個進程組都干掉瘦赫。 設(shè)置為true的話,一般killasgroup也會被設(shè)置為true蛤迎。
需要注意的是确虱,該選項發(fā)送的是stop信號
默認(rèn)為false。替裆。非必須設(shè)置蝉娜。。
;killasgroup=false ; 這個和上面的stopasgroup類似扎唾,不過發(fā)送的是kill信號
;user=chrism ; 如果supervisord是root啟動召川,我們在這里設(shè)置這個非root用戶,可以用來
管理該program
默認(rèn)不設(shè)置胸遇。荧呐。。非必須設(shè)置項
;redirect_stderr=true ; 如果為true纸镊,則stderr的日志會被寫入stdout日志文件中
默認(rèn)為false倍阐,非必須設(shè)置
;stdout_logfile=/a/path ; 子進程的stdout的日志路徑,可以指定路徑逗威,AUTO峰搪,none等三個選項。
設(shè)置為none的話凯旭,將沒有日志產(chǎn)生概耻。設(shè)置為AUTO的話,將隨機找一個地方
生成日志文件罐呼,而且當(dāng)supervisord重新啟動的時候鞠柄,以前的日志文件會被
清空。當(dāng) redirect_stderr=true的時候嫉柴,sterr也會寫進這個日志文件
;stdout_logfile_maxbytes=1MB ; 日志文件最大大小厌杜,和[supervisord]中定義的一樣。默認(rèn)為50
;stdout_logfile_backups=10 ; 和[supervisord]定義的一樣计螺。默認(rèn)10
;stdout_capture_maxbytes=1MB ; 這個東西是設(shè)定capture管道的大小夯尽,當(dāng)值不為0的時候,子進程可以從stdout
發(fā)送信息登馒,而supervisor可以根據(jù)信息匙握,發(fā)送相應(yīng)的event。
默認(rèn)為0谊娇,為0的時候表達(dá)關(guān)閉管道肺孤。。济欢。非必須項
;stdout_events_enabled=false ; 當(dāng)設(shè)置為ture的時候赠堵,當(dāng)子進程由stdout向文件描述符中寫日志的時候,將
觸發(fā)supervisord發(fā)送PROCESS_LOG_STDOUT類型的event
默認(rèn)為false法褥。茫叭。。非必須設(shè)置
;stderr_logfile=/a/path ; 這個東西是設(shè)置stderr寫的日志路徑半等,當(dāng)redirect_stderr=true揍愁。這個就不用
設(shè)置了,設(shè)置了也是白搭杀饵。因為它會被寫入stdout_logfile的同一個文件中
默認(rèn)為AUTO莽囤,也就是隨便找個地存,supervisord重啟被清空切距。朽缎。非必須設(shè)置
;stderr_logfile_maxbytes=1MB ; 這個出現(xiàn)好幾次了,就不重復(fù)了
;stderr_logfile_backups=10 ; 這個也是
;stderr_capture_maxbytes=1MB ; 這個一樣谜悟,和stdout_capture一樣话肖。 默認(rèn)為0,關(guān)閉狀態(tài)
;stderr_events_enabled=false ; 這個也是一樣葡幸,默認(rèn)為false
;environment=A="1",B="2" ; 這個是該子進程的環(huán)境變量最筒,和別的子進程是不共享的
;serverurl=AUTO ;
; The below sample eventlistener section shows all possible
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.
;[eventlistener:theeventlistenername] ;這個東西其實和program的地位是一樣的,也是suopervisor啟動的子進
程蔚叨,不過它干的活是訂閱supervisord發(fā)送的event床蜘。他的名字就叫
listener了。我們可以在listener里面做一系列處理蔑水,比如報警等等
樓主這兩天干的活悄泥,就是弄的這玩意
;command=/bin/eventlistener ; 這個和上面的program一樣,表示listener的可執(zhí)行文件的路徑
;process_name=%(program_name)s ; 這個也一樣肤粱,進程名弹囚,當(dāng)下面的numprocs為多個的時候,才需要领曼。否則默認(rèn)就
OK了
;numprocs=1 ; 相同的listener啟動的個數(shù)
;events=EVENT ; event事件的類型鸥鹉,也就是說,只有寫在這個地方的事件類型庶骄。才會被發(fā)送
;buffer_size=10 ; 這個是event隊列緩存大小毁渗,單位不太清楚,樓主猜測應(yīng)該是個吧单刁。當(dāng)buffer
超過10的時候灸异,最舊的event將會被清除,并把新的event放進去。
默認(rèn)值為10肺樟。檐春。非必須選項
;directory=/tmp ; 進程執(zhí)行前,會切換到這個目錄下執(zhí)行
默認(rèn)為不切換么伯。疟暖。。非必須
;umask=022 ; 淹沒田柔,默認(rèn)為none俐巴,不說了
;priority=-1 ; 啟動優(yōu)先級,默認(rèn)-1硬爆,也不扯了
;autostart=true ; 是否隨supervisord啟動一起啟動欣舵,默認(rèn)true
;autorestart=unexpected ; 是否自動重啟,和program一個樣缀磕,分true,false,unexpected等邻遏,注意
unexpected和exitcodes的關(guān)系
;startsecs=1 ; 也是一樣,進程啟動后跑了幾秒鐘虐骑,才被認(rèn)定為成功啟動准验,默認(rèn)1
;startretries=3 ; 失敗最大嘗試次數(shù),默認(rèn)3
;exitcodes=0,2 ; 期望或者說預(yù)料中的進程退出碼廷没,
;stopsignal=QUIT ; 干掉進程的信號糊饱,默認(rèn)為TERM,比如設(shè)置為QUIT颠黎,那么如果QUIT來干這個進程
那么會被認(rèn)為是正常維護另锋,退出碼也被認(rèn)為是expected中的
;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
;stopasgroup=false ; send stop signal to the UNIX process group (default false)
;killasgroup=false ; SIGKILL the UNIX process group (def false)
;user=chrism ;設(shè)置普通用戶,可以用來管理該listener進程狭归。
默認(rèn)為空夭坪。。非必須設(shè)置
;redirect_stderr=true ; 為true的話过椎,stderr的log會并入stdout的log里面
默認(rèn)為false室梅。。疚宇。非必須設(shè)置
;stdout_logfile=/a/path ; 這個不說了亡鼠,好幾遍了
;stdout_logfile_maxbytes=1MB ; 這個也是
;stdout_logfile_backups=10 ; 這個也是
;stdout_events_enabled=false ; 這個其實是錯的,listener是不能發(fā)送event
;stderr_logfile=/a/path ; 這個也是
;stderr_logfile_maxbytes=1MB ; 這個也是
;stderr_logfile_backups ; 這個不說了
;stderr_events_enabled=false ; 這個也是錯的敷待,listener不能發(fā)送event
;environment=A="1",B="2" ; 這個是該子進程的環(huán)境變量
默認(rèn)為空间涵。。榜揖。非必須設(shè)置
;serverurl=AUTO ; override serverurl computation (childutils)
; The below sample group section shows all possible group values,
; create one or more 'real' group: sections to create "heterogeneous"
; process groups.
;[group:thegroupname] ;這個東西就是給programs分組勾哩,劃分到組里面的program抗蠢。我們就不用一個一個去操作了
我們可以對組名進行統(tǒng)一的操作。 注意:program被劃分到組里面之后思劳,就相當(dāng)于原來
的配置從supervisor的配置文件里消失了迅矛。。敢艰。supervisor只會對組進行管理,而不再
會對組里面的單個program進行管理了
;programs=progname1,progname2 ; 組成員册赛,用逗號分開
這個是個必須的設(shè)置項
;priority=999 ; 優(yōu)先級钠导,相對于組和組之間說的
默認(rèn)999。森瘪。非必須選項
; 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] ;這個東西挺有用的牡属,當(dāng)我們要管理的進程很多的時候,寫在一個文件里面
就有點大了扼睬。我們可以把配置信息寫到多個文件中逮栅,然后include過來
;files = relative/directory/*.ini
supervisor示例
示例:基于supervisor管理elasticsearch
# cat /etc/supervisord.d/service.ini
[program:elasticsearch]
command=/application/elasticsearch/bin/elasticsearch
;程序啟動命令
user=elastic
; 用哪個用戶啟動進程,默認(rèn)是root
loglevel=info
;日志的級別
redirect_stderr=true
; 把stderr重定向到stdout窗宇,默認(rèn)false
stdout_logfile_maxbytes=50MB
; stdout 日志文件大小措伐,默認(rèn)50MB
stdout_logfile_backups = 10
; stdout 日志文件備份數(shù),默認(rèn)是10
;stdout 日志文件军俊,需要注意當(dāng)指定目錄不存在時無法正常啟動侥加,所以需要手動創(chuàng)建目錄(supervisord 會自動創(chuàng)建日志文件)
stdout_logfile=/var/log/supervisord/service.log
stderr_logfile=/var/log/supervisord/service.log
startsecs=10
; 啟動10秒后沒有異常退出,就表示進程正常啟動了粪躬,默認(rèn)為1秒
startretries=60
; 啟動失敗自動重試次數(shù)担败,默認(rèn)是3
redirect_stderr=true
stopasgroup=false
;默認(rèn)為false,進程被殺死時,是否向這個進程組發(fā)送stop信號镰官,包括子進程
killasgroup=false
;默認(rèn)為false提前,向進程組發(fā)送kill信號,包括子進程
# 加載配置
$ supervisorctl reread
$ supervisorctl update
# 啟動elasticsearch
$ supervisorctl start elasticsearch
# 查看啟動狀態(tài)
$ supervisorctl status elasticsearch
常見的命令如下:
- supervisord 初始啟動Supervisord泳唠,啟動狈网、管理配置中設(shè)置的進程
- supervisorctl stop programxxx 停止某一個進程(programxxx),programxxx為
- [program:chatdemon]里配置的值笨腥,這個示例就是chatdemon
- supervisorctl start programxxx 啟動某個進程
- supervisorctl restart programxxx 重啟某個進程
- supervisorctl stop groupworker 重啟所有屬于名為groupworker這個分組的進程(start,restart同理)
- supervisorctl stop all 停止全部進程孙援,注:start、restart扇雕、stop都不會載入最新的配置文件
- supervisorctl reload 載入最新的配置文件拓售,停止原有進程并按新的配置啟動、管理所有進程
- supervisorctl update 根據(jù)最新的配置文件镶奉,啟動新配置或有改動的進程梯嗽,配置沒有改動的進程不會受影響而重啟端考。注意:顯示用stop停止掉的進程边篮,用reload或者update都不會自動重啟 supervisorctl tail
- programname //查看programname的日志
- supervisorctl tail redis //查看日志
supervisor監(jiān)控管理
為了更方便的遠(yuǎn)程管理 Supervisor ,可以開啟其自帶的 web 控制臺币砂。
# 修改配置文件去掉注釋啟用
$ vim at /etc/supervisord.conf
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))
# 重啟supervisord服務(wù)
$ systemctl restart supervisord
通過瀏覽器直接訪問即可
file
點擊 "閱讀原文" 獲取更好的閱讀體驗!