欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python進(jìn)程管理神器Supervisor詳解

 更新時(shí)間:2022年07月14日 11:29:34   作者:大數(shù)據(jù)技術(shù)派  
Supervisor 是一款 Python 開(kāi)發(fā)的進(jìn)程管理系統(tǒng),允許用戶監(jiān)視和控制 Linux 上的進(jìn)程,能將一個(gè)普通命令行進(jìn)程變?yōu)楹笈_(tái)守護(hù)進(jìn)程,異常退出時(shí)能自動(dòng)重啟,這篇文章主要介紹了Python進(jìn)程管理神器Supervisor,需要的朋友可以參考下

一、簡(jiǎn)介

Supervisor 是一款 Python 開(kāi)發(fā)的進(jìn)程管理系統(tǒng),允許用戶監(jiān)視和控制 Linux 上的進(jìn)程,能將一個(gè)普通命令行進(jìn)程變?yōu)楹笈_(tái)守護(hù)進(jìn)程,異常退出時(shí)能自動(dòng)重啟
詳細(xì)介紹查閱:Supervisor Introduction

二、安裝

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.修改配置文件

vim supervisord/supervisord.conf

將最后一部分改為

[include]
# 因?yàn)槲疫@里是放在root用戶目錄下,也可以放其它目錄
files=/root/supervisord/conf.d/*.conf

四、初試

1.啟動(dòng) supervisord

supervisord -c supervisord/supervisord.conf

這樣就把supervisord啟動(dòng)了,我們接下來(lái)可以把我們的任務(wù)交給他去守護(hù)了,停止了會(huì)幫我們自動(dòng)重啟。

查看版本

supervisord -v

2.編寫(xiě)簡(jiǎn)單的 Shell 腳本

vim supervisord/test.sh

內(nèi)容如下

#!/bin/bash
while : 
do
    echo `date '+%Y-%m-%d %H:%m:%S'`
    sleep 1
done

簡(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)為T(mén)ERM
stopwaitsecs=10                           ; 在SIGKILL之前等待的最大秒數(shù),默認(rèn)為10
user=root                                 ; 在某用戶下設(shè)置uid來(lái)啟動(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

4.重新讀取配置并更新子進(jìn)程

因?yàn)槲覀兊?code>supervisord已經(jīng)啟動(dòng)了,可以通過(guò)ps -ef | grep supervisord.conf查看。添加了子進(jìn)程配置文件,需要把它重新加載進(jìn)來(lái):

先進(jìn)入supervisord目錄: cd supervisord,否則執(zhí)行下面命令會(huì)有問(wèn)題。

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)行,我們來(lái)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)命令,見(jiàn)附錄。

五、Web 界面

web界面沒(méi)多大用處,就是如果想啟動(dòng)、暫停進(jìn)程是,不需要敲命令而已。

vim supervisord.conf

取消注釋

[inet_http_server]
port=*:9001                ; 此處改為*便于調(diào)試

重啟 supervisord

supervisorctl reload

瀏覽器訪問(wèn):linux_ip:9001.

附錄: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 start <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>

歡迎訪問(wèn)我的個(gè)人博客,聽(tīng)聽(tīng)我的故事。

到此這篇關(guān)于Python進(jìn)程管理神器Supervisor的文章就介紹到這了,更多相關(guān)Python Supervisor進(jìn)程管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論