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
Ich werde die minimal erforderlichen Inhalte über die grundlegende Verwendung von Supervisor schreiben.
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
[root@ip-172-31-37-208 ~]# echo_supervisord_conf > /etc/supervisord.conf
Die Konfigurationsdatei wird unter usw. abgelegt.
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
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
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.
[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)
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.
Praktisch! !! !! !! !!
Recommended Posts