Supervisor是什么呢?它作為一種進(jìn)程管理的軟件,可以對(duì)其用來監(jiān)視以及進(jìn)行控制Linux上面的服務(wù)器進(jìn)程。它很神奇,能夠?qū)⒁粋€(gè)普通的命令,轉(zhuǎn)化成后臺(tái)的進(jìn)程,甚至如果我們遇到退出的話,也會(huì)強(qiáng)制的進(jìn)行退出,具體怎么運(yùn)作呢?下面就給大家進(jìn)行詳細(xì)的解答。
一、簡(jiǎn)介
Supervisor是一款Python開發(fā)的進(jìn)程管理系統(tǒng),允許用戶監(jiān)視和控制Linux上的進(jìn)程,能將一個(gè)普通命令行進(jìn)程變?yōu)楹笈_(tái)守護(hù)進(jìn)程,異常退出時(shí)能自動(dòng)重啟
二、安裝
Supervisor支持Linux和Mac,不支持Windows
本文系統(tǒng)為:centos,supervisor==4.2.4
pip3 install supervisor
安裝完成后,在Python bin目錄下面會(huì)有這樣幾個(gè)文件。
ls /usr/local/Python38/bin echo_supervisord_conf supervisorctl supervisord
注:由于python bin目錄是加入了環(huán)境變量,所以可以直接執(zhí)行這幾個(gè)文件。
三、創(chuàng)建配置文件
1.首先建個(gè)目錄,存放配置文件:mkdir supervisord。
echo_supervisord_conf > supervisord/supervisord.conf
若報(bào)錯(cuò)-bash:/etc/supervisord.conf:Permission denied,需要切換到root用戶。
2.創(chuàng)建子進(jìn)程配置文件路徑
mkdir -p supervisor/conf.d
后面我們的任務(wù),我們想把它作為守護(hù)進(jìn)程,都需要一個(gè)配置文件,我們把這些配置文件放在conf.d目錄下面。
3.修改配置文件
mkdir -p supervisor/conf.d
將最后一部分改為
[include] # 因?yàn)槲疫@里是放在root用戶目錄下,也可以放其它目錄 files=/root/supervisord/conf.d/*.conf
四、初試
1.啟動(dòng)supervisord
supervisord -c supervisord/supervisord.conf
這樣就把supervisord啟動(dòng)了,我們接下來可以把我們的任務(wù)交給他去守護(hù)了,停止了會(huì)幫我們自動(dòng)重啟。
查看版本
2.編寫簡(jiǎn)單的Shell腳本
supervisord -v
內(nèi)容如下
簡(jiǎn)單運(yùn)行,Ctrl+C退出
3.創(chuàng)建子進(jìn)程配置文件
vim supervisor/conf.d/test.conf
test.conf內(nèi)容如下:
[program:test] command=sh /root/supervisord/test.sh priority=999 ; 相對(duì)啟動(dòng)優(yōu)先級(jí),數(shù)值越小越優(yōu)先,默認(rèn)為999 autostart=true ; 在supervisor啟動(dòng)時(shí)自動(dòng)啟動(dòng),默認(rèn)為true autorestart=true ; 在意外退出時(shí)重新啟動(dòng),默認(rèn)為true startsecs=10 ; 子進(jìn)程啟動(dòng)多少秒后狀態(tài)為running則認(rèn)為啟動(dòng)成功,默認(rèn)為1 startretries=3 ; 嘗試啟動(dòng)的最大次數(shù),默認(rèn)為3 exitcodes=0,2 ; 進(jìn)程的預(yù)期退出代碼列表,默認(rèn)為0 stopsignal=QUIT ; 終止進(jìn)程的信號(hào),默認(rèn)為TERM stopwaitsecs=10 ; 在SIGKILL之前等待的最大秒數(shù),默認(rèn)為10 user=root ; 在某用戶下設(shè)置uid來啟動(dòng)程序,默認(rèn)不切換用戶 redirect_stderr=true ; 是否重定向stdout和stderr,默認(rèn)為false stdout_logfile=/tmp/supervisor.stdout.log ; stdout的輸出文件,默認(rèn)為AUTO stdout_logfile_maxbytes=50MB ; stdout最大文件大小,默認(rèn)為50MB stdout_logfile_backups=10 ; stdout文件備份數(shù),設(shè)為0則不備份,默認(rèn)為10
其實(shí)只需要配置3個(gè)參數(shù),其它不用管:
command=sh/root/supervisord/test.sh:我們的子進(jìn)程啟動(dòng)命令;
stdout_logfile=/tmp/supervisor.stdout.log:日志;
program:test:進(jìn)程名為test,如果進(jìn)程哪一天想停止啟動(dòng)等,需要進(jìn)程名;
目前文件目錄結(jié)構(gòu)是這樣的:
yum install tree tree supervisord supervisord ├── conf.d │ └── test.conf ├── supervisord.conf └── test.sh
.重新讀取配置并更新子進(jìn)程
因?yàn)槲覀兊膕upervisord已經(jīng)啟動(dòng)了,可以通過ps-ef|grep supervisord.conf查看。添加了子進(jìn)程配置文件,需要把它重新加載進(jìn)來:
先進(jìn)入supervisord目錄:cd supervisord,否則執(zhí)行下面命令會(huì)有問題。
supervisorctl reread
再次查看進(jìn)程狀態(tài)
supervisorctl status
結(jié)果:
test RUNNING pid 30278,uptime 1:29:41
名為test的這個(gè)進(jìn)程已經(jīng)作為守護(hù)進(jìn)程在后臺(tái)運(yùn)行,我們來kill掉他:
kill 30278
再執(zhí)行supervisorctl status,會(huì)發(fā)現(xiàn)狀態(tài)立馬由starting,不一會(huì)變成running,那么supervisord的作用已經(jīng)很明顯了,可以自動(dòng)幫我們自動(dòng)監(jiān)控任務(wù)。
注:對(duì)于子進(jìn)程的添加、刪除、啟動(dòng)、停止相關(guān)命令,見附錄。
五、Web界面
web界面沒多大用處,就是如果想啟動(dòng)、暫停進(jìn)程是,不需要敲命令而已。
vim supervisord.conf
取消注釋
重啟supervisord
supervisorctl reload
瀏覽器訪問:linux_ip:9001.
supervisorctl reload
附錄:supervisorctl常用命令
新增某配置文件,重新加載
supervisorctl reread
改動(dòng)某配置文件,重新加載
supervisorctl update
重啟supervisord
supervisorctl reload
查看所有進(jìn)程狀態(tài)
supervisorctl status
查看指定進(jìn)程狀態(tài)
supervisorctl status<name>
啟動(dòng)所有子進(jìn)程
supervisorctl start all
啟動(dòng)指定子進(jìn)程
supervisorctl status<name>
重啟所有子進(jìn)程
supervisorctl restart all
重啟指定子進(jìn)程
supervisorctl restart<name>
停止所有子進(jìn)程
supervisorctl stop all
停止指定子進(jìn)程
supervisorctl stop<name>
添加子進(jìn)程到進(jìn)程組
supervisorctl add<name>
從進(jìn)程組移除子進(jìn)程,需要先stop。注意:移除后,需要使用reread和update才能重新運(yùn)行該進(jìn)程
supervisorctl reomve<name>
以上就位大家介紹到這里了,希望可以為各位讀者帶來幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/127619.html
摘要:生產(chǎn)環(huán)境下,自帶的服務(wù)器,無法滿足性能要求。配置前面我們已經(jīng)在系統(tǒng)環(huán)境下安裝了安裝好的二進(jìn)制文件放在文件夾下,接下來使用來管理。參考文章探針安裝部署部署筆記在生產(chǎn)環(huán)境上部署使用詳解本文系工程師編譯整理。 由于字?jǐn)?shù)的限制,其實(shí)本篇文章的全標(biāo)題為 《如何在 virtualenv 環(huán)境下 Django + Nginx + Gunicorn+ Supervisor 搭建 Python Web》...
摘要:生產(chǎn)環(huán)境下,自帶的服務(wù)器,無法滿足性能要求。配置前面我們已經(jīng)在系統(tǒng)環(huán)境下安裝了安裝好的二進(jìn)制文件放在文件夾下,接下來使用來管理。參考文章探針安裝部署部署筆記在生產(chǎn)環(huán)境上部署使用詳解本文系工程師編譯整理。 由于字?jǐn)?shù)的限制,其實(shí)本篇文章的全標(biāo)題為 《如何在 virtualenv 環(huán)境下 Django + Nginx + Gunicorn+ Supervisor 搭建 Python Web》...
摘要:基于網(wǎng),分享項(xiàng)目的組網(wǎng)架構(gòu)和部署。項(xiàng)目組網(wǎng)架構(gòu)架構(gòu)說明流項(xiàng)目訪問分為兩個(gè)流,通過分兩個(gè)端口暴露給外部使用數(shù)據(jù)流用戶訪問網(wǎng)站。通過進(jìn)行配置,使用作為異步隊(duì)列來存儲(chǔ)任務(wù),并將處理結(jié)果存儲(chǔ)在中。 基于Raindrop網(wǎng),分享項(xiàng)目的組網(wǎng)架構(gòu)和部署。 項(xiàng)目組網(wǎng)架構(gòu) showImg(https://cloud.githubusercontent.com/assets/7239657/1015704...
閱讀 928·2023-01-14 11:38
閱讀 902·2023-01-14 11:04
閱讀 759·2023-01-14 10:48
閱讀 2065·2023-01-14 10:34
閱讀 968·2023-01-14 10:24
閱讀 844·2023-01-14 10:18
閱讀 512·2023-01-14 10:09
閱讀 591·2023-01-14 10:02