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