Heim  >  Artikel  >  Backend-Entwicklung  >  Machen Sie sich mit dem Python-Prozessmanagement-Artefakt Supervisor vertraut

Machen Sie sich mit dem Python-Prozessmanagement-Artefakt Supervisor vertraut

WBOY
WBOYnach vorne
2022-07-28 15:34:462333Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Python, ein in Python entwickeltes Prozessverwaltungssystem, das es Benutzern ermöglicht, Prozesse unter Linux zu überwachen und zu steuern und einen gewöhnlichen Befehlszeilenprozess automatisch in einen Hintergrund-Daemon-Prozess umzuwandeln Starten Sie neu, wenn Sie es ungewöhnlich beenden. Schauen wir es uns an. Ich hoffe, es wird für alle hilfreich sein.

Machen Sie sich mit dem Python-Prozessmanagement-Artefakt Supervisor vertraut

【Verwandte Empfehlung: Python3-Video-Tutorial

1. Einführung

Supervisor ist ein in Python entwickeltes Prozessmanagementsystem, mit dem Benutzer Prozesse unter Linux überwachen und steuern können. Es kann einen allgemeinen Befehl konvertieren Der laufende Prozess wird zu einem Hintergrund-Daemon-Prozess, der bei abnormalem Beenden automatisch neu gestartet werden kann. supervisor==4.2.4

pip3 install supervisor

Nach Abschluss der Installation befinden sich mehrere Dateien wie diese im Python-bin-Verzeichnis.

ls /usr/local/Python38/bin

echo_supervisord_conf
supervisorctl
supervisord
Hinweis: Da dem Python-Bin-Verzeichnis Umgebungsvariablen hinzugefügt wurden, können diese Dateien direkt ausgeführt werden.

3. Erstellen Sie die Konfigurationsdatei
centos,supervisor==4.2.4

echo_supervisord_conf > supervisord/supervisord.conf

安装完成后,在Python bin目录下面会有这样几个文件。

mkdir -p supervisor/conf.d

注:由于python bin目录是加入了环境变量,所以可以直接执行这几个文件。

三、创建配置文件

1.首先建个目录,存放配置文件:mkdir supervisord

vim supervisord/supervisord.conf

若报错 -bash: /etc/supervisord.conf: Permission denied,需要切换到 root用户。

2.创建子进程配置文件路径

[inclue]
# 因为我这里是放在root用户目录下,也可以放其它目录
files=/root/supervisord/conf.d/*.conf

后面我们的任务,我们想把它作为守护进程,都需要一个配置文件,我们把这些配置文件放在conf.d目录下面。

3.修改配置文件

supervisord -c supervisord/supervisord.conf

将最后一部分改为

supervisord -v

四、初试

1.启动 supervisord

vim supervisord/test.sh

这样就把supervisord启动了,我们接下来可以把我们的任务交给他去守护了,停止了会帮我们自动重启。

查看版本

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

2.编写简单的 Shell 脚本

vim supervisor/conf.d/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

简单运行,Ctrl + C 退出

3.创建子进程配置文件

yum install tree
tree supervisord

supervisord
├── conf.d
│   └── test.conf
├── supervisord.conf
└── test.sh

test.conf内容如下:

supervisorctl reread

其实只需要配置3个参数,其它不用管:

  • command=sh /root/supervisord/test.sh: 我们的子进程启动命令;
  • stdout_logfile=/tmp/supervisor.stdout.log: 日志;
  • program:test:进程名为test,如果进程哪一天想停止启动等,需要进程名;

目前文件目录结构是这样的:

supervisorctl status

4.重新读取配置并更新子进程

因为我们的supervisord已经启动了,可以通过ps -ef | grep supervisord.conf查看。添加了子进程配置文件,需要把它重新加载进来:

先进入supervisord目录: cd supervisord,否则执行下面命令会有问题。

kill 30278

再次查看进程状态

vim supervisord.conf

结果:

test     RUNNING   pid 30278, uptime 1:29:41

名为test的这个进程已经作为守护进程在后台运行,我们来kill掉他:

[inet_http_server]
port=*:9001                ; 此处改为*便于调试

再执行supervisorctl status,会发现状态立马由starting,不一会变成running,那么supervisord

1. Erstellen Sie zunächst ein Verzeichnis zum Speichern der Konfigurationsdatei: mkdir supervisord.

supervisorctl reload

Wenn ein Fehler gemeldet wird -bash: /etc/supervisord.conf: Berechtigung verweigert, müssen Sie zum Root-Benutzer wechseln.

2. Erstellen Sie den Pfad für die Konfigurationsdatei des untergeordneten Prozesses
supervisorctl reread

Unsere nächste Aufgabe, wir möchten ihn als Daemon-Prozess verwenden, erfordert eine Konfigurationsdatei. Wir legen diese Konfigurationsdateien im Verzeichnis conf.d ab.

3. Ändern Sie die Konfigurationsdatei

supervisorctl update

Ändern Sie den letzten Teil in

supervisorctl reload

4. Starten Sie supervisord

supervisorctl status

Damit wird supervisord gestartet Wir haben ihm unsere Schutzaufgaben übertragen und werden automatisch für uns neu gestartet, wenn es aufhört.

Version anzeigen

supervisorctl status <name>

2. Schreiben Sie ein einfaches Shell-Skript

supervisorctl start all

Einfach ausführen, Strg + C zum Beenden

3

supervisorctl start <name>

test.conf enthält den folgenden Inhalt:

supervisorctl restart all

Tatsächlich müssen Sie nur 3 Parameter konfigurieren und müssen sich um die anderen nicht kümmern:

  • command=sh /root/supervisord/test.sh: Unser Unterprozess-Startbefehl;
  • stdout_logfile=/tmp/supervisor.stdout.log: Log;
  • program:test: Der Prozessname ist <code>test. Wenn der Prozess an einem beliebigen Tag stoppen und starten möchte, ist der Prozessname ist erforderlich;

Die aktuelle Dateiverzeichnisstruktur ist wie folgt:

supervisorctl restart <name>

4 .Lesen Sie die Konfiguration erneut und aktualisieren Sie den untergeordneten Prozess

Weil unser supervisord gestartet wurde, Sie können es über ps -ef | anzeigen. Die Unterprozess-Konfigurationsdatei wurde hinzugefügt und muss neu geladen werden:

Geben Sie zunächst das Verzeichnis supervisord ein: cd supervisord, sonst kommt es zu Problemen bei der Ausführung des folgenden Befehls .

supervisorctl stop all

Überprüfen Sie den Prozessstatus noch einmal

supervisorctl stop <name>

Ergebnis:

test RUNNING pid 30278, Betriebszeit 1:29:41

Der Prozess mit dem Namen test wurde verwendet als Ein Daemon Der Prozess läuft im Hintergrund. Beenden wir ihn:

supervisorctl add <name>
Führen Sie supervisorctl status erneut aus, und Sie werden feststellen, dass sich der Status sofort von starting in ausgeführt wird, ist die Rolle von <code>supervisord bereits klar und kann uns automatisch dabei helfen, Aufgaben automatisch zu überwachen.

🎜Hinweis: Befehle zum Hinzufügen, Löschen, Starten und Stoppen von untergeordneten Prozessen finden Sie im Anhang. 🎜🎜🎜5. Weboberfläche 🎜🎜🎜Die Weboberfläche ist nicht sehr nützlich, das heißt, wenn Sie einen Prozess starten oder anhalten möchten, müssen Sie keine Befehle eingeben. 🎜
supervisorctl reomve <name>
🎜Entkommentieren🎜rrreee🎜Supervisord neu starten🎜rrreee🎜Browserzugriff: linux_ip:9001.🎜🎜Anhang: allgemeine Supervisorctl-Befehle🎜🎜Eine Konfigurationsdatei hinzufügen, neu laden🎜rrreee🎜Eine Konfigurationsdatei ändern, neu laden🎜rr reee 🎜Supervisord neu starten🎜rrreee 🎜Zeigen Sie den Status aller Prozesse an.🎜rrreee🎜Zeigen Sie den Status des angegebenen Prozesses an Stoppen Sie alle untergeordneten Prozesse.🎜rrreee🎜Stoppen Sie den angegebenen untergeordneten Prozess.🎜rrreee🎜Fügen Sie den untergeordneten Prozess zur Prozessgruppe hinzu. Hinweis: Nach dem Entfernen müssen Sie „reread and update“ verwenden, um den Vorgang erneut auszuführen🎜rrreee🎜[Verwandte Empfehlungen:🎜Python3-Videoanleitung🎜]🎜

Das obige ist der detaillierte Inhalt vonMachen Sie sich mit dem Python-Prozessmanagement-Artefakt Supervisor vertraut. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen