[LINUX] Erste Schritte mit Supervisor

Was ist Supervisor?

Ein System, das Prozesse steuern und verwalten kann.

Insbesondere wird der Prozess in einen Daemon umgewandelt und im Falle eines Absturzes neu gestartet.

Das von mir zugewiesene Projekt verwendet beispielsweise den Warteschlangenarbeiter von Laravel, der für die kontinuierliche parallele Ausführung von Programmen nützlich ist.

Leider startet es für Windows-Benutzer nicht unter Windows, da es UNIX-ähnlich ist.

Offizielle Dokumentation http://supervisord.org/running.html#adding-a-program

Über diesen Artikel

Ich werde die minimal erforderlichen Inhalte über die grundlegende Verwendung von Supervisor schreiben.

Installation

Dieses Mal werden wir es auf der EC2-Instanz üben, die in AWS entsprechend gestartet wurde.

Serverzugriff ~ Super User Switching

...$ ssh -i ~/.ssh/udemy_sample2.pem [email protected]
[ec2-user@ip-172-31-37-208 ~]$ sudo su -

Installieren Sie den Supervisor Ich habe es nicht im Detail untersucht, aber es scheint, dass "easy_install" gut ist.

[root@ip-172-31-37-208 ~]# sudo easy_install supervisor
Searching for supervisor
Reading https://pypi.python.org/simple/supervisor/
Downloading https://files.pythonhosted.org/packages/ca/1f/07713b0e1e34c312450878801d496bce8b9eff5ea9e70d41ff4e299b2df5/supervisor-4.1.0-py2.py3-none-any.whl#sha256=a76b2f77a560f2dc411c0254a4eb15f555e99faac48621b0f1fc9ab013944f47
Best match: supervisor 4.1.0
Processing supervisor-4.1.0-py2.py3-none-any.whl
Installing supervisor-4.1.0-py2.py3-none-any.whl to /usr/lib/python2.7/site-packages
writing requirements to /usr/lib/python2.7/site-packages/supervisor-4.1.0-py2.7.egg/EGG-INFO/requires.txt
Adding supervisor 4.1.0 to easy-install.pth file
Installing echo_supervisord_conf script to /usr/bin
Installing pidproxy script to /usr/bin
Installing supervisorctl script to /usr/bin
Installing supervisord script to /usr/bin

Installed /usr/lib/python2.7/site-packages/supervisor-4.1.0-py2.7.egg
Processing dependencies for supervisor
Finished processing dependencies for supervisor

Konfigurationsdatei erstellen

[root@ip-172-31-37-208 ~]# echo_supervisord_conf > /etc/supervisord.conf

Die Konfigurationsdatei wird unter usw. abgelegt.

Hinzufügen eines zu dämonisierenden Programms (wenn nicht einzeln verwaltet)

Wenn Sie die Konfigurationsdateien nicht einzeln verwalten, fügen Sie das zu daemonisierende Programm wie folgt zur Datei Supervisord.conf hinzu.

supervisord.conf


[program:foo]
command=/bin/cat

Hinzufügen eines Programms zu einem Daemon (bei individueller Verwaltung)

Wenn Sie die Konfigurationsdateien einzeln verwalten möchten, gehen Sie wie folgt vor.

Erstellen eines Verzeichnisses zum Speichern einzelner Programmkonfigurationsdateien

[root@ip-172-31-37-208 ~]# mkdir /etc/supervisord.d

Ändern Sie die Datei Supervisord.conf

Änderungen (vor Änderung)

supervisord.conf


;[include]
;files = relative/directory/*.ini

Geändertes Teil (nach Änderung)

supervisord.conf


[include]
files = /etc/supervisord.d/*.conf

Dadurch werden auch die einzelnen Konfigurationsdateien geladen, die unter /etc/supervisord.d erstellt wurden.

Individuelle Programmkonfigurationsdateien erstellen

[root@ip-172-31-37-208 ~]# vi /etc/supervisord.d/foo.conf

Erstellt wie folgt

foo.conf


[program:foo]
command=/bin/cat

Über den zu verwendenden Befehl

supervisord

Wird verwendet, um den Supervisor zu starten.

Es wird nicht für detaillierte Operationen des Programms verwendet.

supervisorctl

Es wird im Betrieb des ausgeführten Programms verwendet. Detaillierte Betriebsmethoden finden Sie unter der folgenden URL.

Starten Sie Supervisor ~ Programm ausführen

Starten Sie Supervisor.

[root@ip-172-31-37-208 ~]# /usr/bin/supervisord -c /etc/supervisord.conf

Es beginnt nur mit / usr / bin / Supervisord, aber in diesem Fall scheint es besser, die Option c zu verwenden und den absoluten Pfad der Konfigurationsdatei anzugeben, da der Speicherort der Konfigurationsdatei der Reihe nach durchsucht wird. ..

Überprüfen Sie das Programm in der Konfigurationsdatei.

[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl status
foo                              RUNNING   pid 29747, uptime 0:02:30

Es scheint, dass das in der Konfigurationsdatei beschriebene Programm beim Start von Supervisor automatisch ausgeführt wird.

Versuche zu töten.

[root@ip-172-31-37-208 etc]# kill -9 29747
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl status
foo                              RUNNING   pid 29761, uptime 0:00:03

Vergewissern Sie sich, dass sich die Prozess-ID geändert hat und neu gestartet wurde.

Stoppen Sie den Vorgang.

[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl stop foo
foo: stopped
[root@ip-172-31-37-208 ~]# /usr/bin/supervisorctl status
foo                              STOPPED   Mar 29 01:17 AM

Stellen Sie sicher, dass der Vorgang gestoppt ist.

Versuchen Sie, den Vorgang zu löschen.

[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl remove foo
foo: removed process group
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl status
[root@ip-172-31-37-208 etc]#

Stellen Sie sicher, dass der Prozess beendet ist.

Fügen Sie ein neues Programm hinzu und versuchen Sie, es im Vordergrund auszuführen.

Fügen Sie der Supervisord.conf Folgendes hinzu

supervisord.conf


[program:foo2]
command=watch -n 1 `date`

Lesen Sie die Konfigurationsdatei und starten Sie den Vorgang

[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl reread
foo: available
foo2: available
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl add foo2
foo2: added process group
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl status
foo2                             RUNNING   pid 1177, uptime 0:00:04
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl fg foo2
Every 1.0s: `date`                                      Sun Mar 29 04:24:25 2020

sh: Sun: command not found

Bestätigte Ausführung im Vordergrund.

Sie können mit Ctl + C beenden. (Natürlich bleibt der Prozess dämonisiert)

Befehlsliste

Ich habe diejenigen extrahiert, von denen ich denke, dass ich sie oft verwenden werde.

status

Überprüfen Sie den Status des Prozessstatus.

reread

Lesen Sie die Konfigurationsdatei.

Zu diesem Zeitpunkt werden keine Programme hinzugefügt oder entfernt.

add <name>

Wenden Sie das in der Konfigurationsdatei beschriebene Programm an (Startvorgang).

remove <name>

Löschen Sie einen gestoppten Prozess.

restart <name>

Starten Sie den Prozess neu.

Beachten Sie, dass dies allein den Inhalt der Konfigurationsdatei nicht liest.

stop

Stoppen Sie den Prozess.

start

Starten Sie den Prozess.

update

Laden Sie die Konfigurationsdatei neu und starten Sie das Programm neu.

Wird nur das Programm neu gestartet, dessen Einstellungen sich geändert haben?

reload

Starten Sie den Supervisor-Daemon neu.

Zusammenfassung

Praktisch! !! !! !! !!

Recommended Posts

Erste Schritte mit Supervisor
Einführung in MQTT (Einführung)
Einführung in Scrapy (1)
Einführung in Scrapy (3)
Einführung in Tkinter 1: Einführung
Einführung in PyQt
Einführung in Scrapy (2)
[Linux] Einführung in Linux
Einführung in Scrapy (4)
Einführung in discord.py (2)
Einführung in Lightning Pytorch
Erste Schritte mit Web Scraping
Einführung in nichtparametrische Felder
Einführung in EV3 / MicroPython
Einführung in die Python-Sprache
Einführung in die TensorFlow-Bilderkennung
Einführung in OpenCV (Python) - (2)
Einführung in PyQt4 Teil 1
Einführung in die Abhängigkeitsinjektion
Einführung in Private Chainer
Einführung in das maschinelle Lernen
Einführung in den Wörterbuch-Suchalgorithmus
Einführung in die Monte-Carlo-Methode
[Lernmemorandum] Einführung in vim
Einführung in PyTorch (1) Automatische Differenzierung
opencv-python Einführung in die Bildverarbeitung
Einführung in Python Django (2) Win
Einführung in das Schreiben von Cython [Notizen]
Einführung in Private TensorFlow
Eine Einführung in das maschinelle Lernen
[Einführung in cx_Oracle] Übersicht über cx_Oracle
Eine super Einführung in Linux
Einführung
AOJ Einführung in die Programmierung Thema Nr. 7, Thema Nr. 8
Einführung in die Anomalieerkennung 1 Grundlagen
Einführung in RDB mit sqlalchemy Ⅰ
[Einführung in Systre] Fibonacci Retracement ♬
Einführung in die nichtlineare Optimierung (I)
Einführung in die serielle Kommunikation [Python]
AOJ Einführung in die Programmierung Thema Nr. 5, Thema Nr. 6
Einführung in Deep Learning ~ Lernregeln ~
[Einführung in Python] <Liste> [Bearbeiten: 22.02.2020]
Einführung in Python (Python-Version APG4b)
Eine Einführung in die Python-Programmierung
[Einführung in cx_Oracle] (8.) Version cx_Oracle 8.0
Einführung in discord.py (3) Verwenden von Stimme
Einführung in die Bayes'sche Optimierung
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
Super Einführung in das maschinelle Lernen
Einführung in Ansible Teil In'Inventory '
Serie: Einführung in den Inhalt von cx_Oracle
[Einführung] Verwendung von open3d
Einführung in Python For, While
Einführung in Deep Learning ~ Backpropagation ~
Einführung in Ansible Teil ④'Variable '
Einführung in den Befehl vi (Hinweis)