Dies ist der Befehls-Supervisor, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
Supervisor – Supervisor-Dokumentation
Supervisor ist ein Client/Server-System, das es seinen Benutzern ermöglicht, eine Nummer zu überwachen und zu steuern
von Prozessen auf UNIX-ähnlichen Betriebssystemen.
Es teilt einige der gleichen Ziele von Programmen wie launchd, daemontools und runit. nicht wie
einige dieser Programme, es ist nicht als Ersatz für init als "Prozess-ID"
1". Stattdessen soll es verwendet werden, um Prozesse im Zusammenhang mit einem Projekt oder einer
Kunde und soll wie jedes andere Programm beim Booten gestartet werden.
NARRATIVE DOKUMENTATION
Einleitung
Übersicht
Supervisor ist ein Client/Server-System, das es seinen Benutzern ermöglicht, eine Reihe von zu steuern
Prozesse auf UNIX-ähnlichen Betriebssystemen. Es wurde von Folgendem inspiriert:
Verbraucherfreundlichkeit
Es ist oft unbequem, schreiben zu müssen rc.d Skripte für jeden einzelnen Prozess
Beispiel. rc.d Skripte sind eine großartige Prozessform mit dem kleinsten gemeinsamen Nenner
Initialisierung/Autostart/Verwaltung, aber das Schreiben und Warten kann mühsam sein.
Zusätzlich rc.d Skripte können einen abgestürzten Prozess nicht automatisch neu starten und vieles mehr
Programme starten sich bei einem Absturz nicht ordnungsgemäß neu. Vorgesetzter startet Prozesse
als seine Unterprozesse und kann so konfiguriert werden, dass sie bei einem Absturz automatisch neu gestartet werden.
Es kann auch automatisch so konfiguriert werden, dass Prozesse bei eigenem Aufruf gestartet werden.
Genauigkeit
Es ist oft schwierig, den genauen Up/Down-Status von Prozessen unter UNIX zu ermitteln. Pidfiles
lügen oft. Supervisord startet Prozesse als Unterprozesse, sodass es immer weiß, was wahr ist
den Up/Down-Status seiner untergeordneten Elemente und kann bequem nach diesen Daten abgefragt werden.
Delegation
Benutzer, die den Prozessstatus steuern müssen, müssen oft nur dies tun. Sie wollen nicht oder
benötigen vollständigen Shell-Zugriff auf die Maschine, auf der die Prozesse ausgeführt werden.
Prozesse, die auf „niedrigen“ TCP-Ports lauschen, müssen häufig als solche gestartet und neu gestartet werden
Root-Benutzer (eine UNIX-Fehlfunktion). Normalerweise ist es völlig in Ordnung, dies zuzulassen
„normale“ Leute können einen solchen Prozess stoppen oder neu starten, ihnen aber Shell-Zugriff gewähren
ist oft unpraktisch, und die Bereitstellung von Root- oder Sudo-Zugriff ist oft unpraktisch
unmöglich. Es ist (zu Recht) auch schwierig, ihnen zu erklären, warum dieses Problem besteht.
Wenn Supervisord als Root gestartet wird, ist es möglich, „normalen“ Benutzern die Kontrolle zu überlassen
solche Prozesse, ohne ihnen die Komplexität des Problems erklären zu müssen.
Supervisorctl ermöglicht eine sehr begrenzte Form des Zugriffs auf die Maschine und erlaubt im Wesentlichen
Benutzer können den Prozessstatus sehen und vom Vorgesetzten gesteuerte Unterprozesse durch Emittieren steuern
„Stopp“, „Start“ und „Neustart“-Befehle über eine einfache Shell oder Web-Benutzeroberfläche.
Prozessgruppen
Prozesse müssen oft in Gruppen gestartet und gestoppt werden, manchmal sogar in einer „Priorität“.
„Ordnung“. Es ist oft schwierig, den Leuten zu erklären, wie man das macht. Der Vorgesetzte erlaubt es
Sie können Prozessen Prioritäten zuweisen und dem Benutzer das Ausgeben von Befehlen über das ermöglichen
supervisorctl-Client wie „Alle starten“ und „Alle neu starten“, wodurch sie im gestartet werden
vorab zugewiesene Prioritätsreihenfolge. Darüber hinaus können Prozesse in „Prozess“ gruppiert werden
Gruppen“ und eine Reihe logisch zusammengehöriger Prozesse können als Einheit gestoppt und gestartet werden.
Eigenschaften
Einfacher
Supervisor wird über eine einfache Konfigurationsdatei im INI-Stil konfiguriert, die leicht zu erlernen ist.
Es bietet viele Optionen pro Prozess, die Ihnen das Leben erleichtern, wenn ein Neustart fehlschlägt
Prozesse und automatische Protokollrotation.
Zentrale
Supervisor bietet Ihnen einen zentralen Ort zum Starten, Stoppen und Überwachen Ihrer Prozesse.
Prozesse können einzeln oder in Gruppen gesteuert werden. Sie können Supervisor so konfigurieren
Bereitstellung einer lokalen oder Remote-Befehlszeile und einer Webschnittstelle.
Effizient
Supervisor startet seine Unterprozesse über fork/exec und Unterprozesse werden nicht dämonisiert. Der
Im Gegensatz zu anderen Systemen meldet das Betriebssystem dem Supervisor sofort, wenn ein Prozess beendet wird
Lösungen, die für den Neustart auf störende PID-Dateien und regelmäßige Abfragen angewiesen sind, schlugen fehl
Prozesse.
ausziehbar
Supervisor verfügt über ein einfaches Ereignisbenachrichtigungsprotokoll, das in beliebige Programme geschrieben werden kann
Sprache zur Überwachung und eine XML-RPC-Schnittstelle zur Steuerung. Es wird auch gebaut
mit Erweiterungspunkten, die von Python-Entwicklern genutzt werden können.
Kompatibel
Supervisor funktioniert auf fast allem außer Windows. Es ist getestet und
Unterstützt auf Linux, Mac OS X, Solaris und FreeBSD. Es ist vollständig in Python geschrieben,
Daher ist für die Installation kein C-Compiler erforderlich.
Bewährt
Obwohl Supervisor heute sehr aktiv weiterentwickelt wird, handelt es sich nicht um eine neue Software. Aufsicht
gibt es schon seit Jahren und ist bereits auf vielen Servern im Einsatz.
Supervisor Komponenten
Supervisor
Der Serverteil des Supervisors wird benannt Supervisor. Es ist für den Start verantwortlich
Untergeordnete Programme bei eigenem Aufruf, Reaktion auf Befehle von Clients, Neustart
abgestürzte oder beendete Unterprozesse und protokolliert seinen Unterprozess stdout und stderr Ausgabe, und
Generieren und Behandeln von „Ereignissen“, die Punkten in der Lebensdauer von Unterprozessen entsprechen.
Der Serverprozess verwendet eine Konfigurationsdatei. Dieser befindet sich typischerweise in
/etc/supervisord.conf. Bei dieser Konfigurationsdatei handelt es sich um eine Konfigurationsdatei im „Windows-INI“-Stil.
Es ist wichtig, diese Datei durch entsprechende Dateisystemberechtigungen zu schützen, da sie
kann unverschlüsselte Benutzernamen und Passwörter enthalten.
Supervisorctl
Der Befehlszeilen-Client-Teil des Supervisors wird benannt Supervisorctl. Es bietet eine
Shell-ähnliche Schnittstelle zu den von bereitgestellten Funktionen Supervisor. Von Supervisorctl herunter ,ein
Der Benutzer kann sich mit verschiedenen verbinden Supervisor Prozesse, Status der Unterprozesse abrufen
gesteuert durch, Stoppen und Starten von Unterprozessen von und Abrufen von Listen laufender Prozesse von a
Supervisor.
Der Befehlszeilen-Client kommuniziert mit dem Server über einen UNIX-Domänen-Socket oder das Internet
(TCP)-Socket. Der Server kann festlegen, dass der Benutzer eines Clients anwesend sein soll
Authentifizierungsdaten, bevor er Befehle ausführen kann. Der Kunde
Der Prozess verwendet normalerweise dieselbe Konfigurationsdatei wie der Server, jedoch eine beliebige Konfiguration
Datei mit einem [Supervisorctl] Abschnitt darin wird funktionieren.
Web-Server
Eine (spärliche) Web-Benutzeroberfläche mit vergleichbarer Funktionalität Supervisorctl könnte sein
Der Zugriff erfolgt über einen Browser, wenn Sie starten Supervisor gegen eine Internetsteckdose. Besuche den
Server-URL (z. B http://localhost: 9001 /), um den Prozessstatus über anzuzeigen und zu steuern
Weboberfläche nach Aktivierung der Konfigurationsdatei [inet_http_server] .
XML-RPC-Schnittstelle
Derselbe HTTP-Server, der die Web-Benutzeroberfläche bedient, stellt eine XML-RPC-Schnittstelle bereit, die sein kann
Wird zur Befragung und Kontrolle des Supervisors und der von ihm ausgeführten Programme verwendet. Siehe xml_rpc.
Plattform Voraussetzungen:
Supervisor wurde getestet und läuft bekanntermaßen unter Linux (Ubuntu 9.10) und Mac OS X
(10.4/10.5/10.6) und Solaris (10 für Intel) und FreeBSD 6.1. Es wird wahrscheinlich gut funktionieren
die meisten UNIX-Systeme.
Der Vorgesetzte wird nicht überhaupt unter jeder Windows-Version laufen.
Supervisor funktioniert bekanntermaßen mit Python 2.4 oder höher, funktioniert jedoch unter keiner Version
von Python3.
Laufen Supervisor
In diesem Abschnitt wird auf a verwiesen BINDIR wenn erklärt wird, wie man das ausführt Supervisor und
Supervisorctl Befehle. Dies ist das „bindir“-Verzeichnis Ihrer Python-Installation
konfiguriert wurde. Zum Beispiel für eine Installation von Python, die über installiert wurde
. / Configure --prefix=/usr/local/py; machen; um installieren, BINDIR wäre /usr/local/py/bin.
Python-Interpreter auf verschiedenen Plattformen verwenden unterschiedliche BINDIR. Schauen Sie sich die Ausgabe von an
setup.py installieren wenn Sie nicht herausfinden können, wo Ihres ist.
Hinzufügen a Mentessa for Good
Vorher Supervisor etwas Nützliches für Sie tut, müssen Sie mindestens eines hinzufügen
Programm Abschnitt zu seiner Konfiguration. Der Programm Abschnitt definiert ein Programm, das ist
ausgeführt und verwaltet, wenn Sie das aufrufen Supervisor Befehl. Um ein Programm hinzuzufügen, müssen Sie Folgendes tun
Bearbeiten Sie die supervisord.conf Datei.
Eines der am einfachsten auszuführenden Programme ist UNIX Katze Programm. A Programm Abschnitt
das wird laufen Katze wenn das Supervisor Der Startvorgang des Prozesses ist unten dargestellt.
[Programm:foo]
Befehl =/bin/kat
Diese Strophe kann ausgeschnitten und eingefügt werden supervisord.conf Datei. Das ist das einfachste
mögliche Programmkonfiguration, da es nur einen Befehl benennt. Programmkonfiguration
Abschnitte verfügen über viele weitere Konfigurationsoptionen, die hier nicht angezeigt werden. Sehen
Weitere Informationen finden Sie unter programx_section.
Laufen Supervisor
So starten Supervisor, Lauf $BINDIR/supervisord. Der resultierende Prozess wird dämonisiert
lösen und vom Terminal lösen. Es führt ein Betriebsprotokoll $CWD/supervisor.log by
default.
Sie können mit dem beginnen Supervisor ausführbar im Vordergrund durch Übergabe von -n Flagge auf seiner
Befehlszeile. Dies ist nützlich, um Startprobleme zu beheben.
WARNUNG: Wichtige Mitteilung
Wann Supervisor startet, sucht es standardmäßig nach seiner Konfigurationsdatei
Standorte einschließlich Strom arbeiten, Verzeichnis. Wenn Sie sicherheitsbewusst sind
Ich werde wahrscheinlich nach dem Argument ein „-c“-Argument angeben wollen Supervisor Befehlsangabe
einen absoluten Pfad zu einer Konfigurationsdatei, um sicherzustellen, dass Sie nicht dazu verleitet werden
Ausführen von Supervisor aus einem Verzeichnis, das einen Schurken enthält supervisord.conf Datei.
Wenn Supervisor ohne diese Angabe als Root gestartet wird, wird eine Warnung ausgegeben -c Argument.
Um den Satz von Programmen zu ändern, die von gesteuert werden Supervisor, bearbeiten Sie die supervisord.conf Datei
und töten - HUP oder auf andere Weise neu starten Supervisor Verfahren. Diese Datei enthält mehrere Beispiele
Programmdefinitionen.
Das Supervisor Der Befehl akzeptiert eine Reihe von Befehlszeilenoptionen. Jeder dieser Befehle
Zeilenoptionen überschreiben alle entsprechenden Werte in der Konfigurationsdatei.
Supervisor Befehlszeile Optionen
-c FILE, --configuration=FILE
Der Weg zu a Supervisor Konfigurationsdatei.
-n, --nodaemon
Führen Sie Supervisor im Vordergrund.
-h, --help
Anzeigen Supervisor Befehlshilfe.
-u USER, --user=USER
UNIX-Benutzername oder numerische Benutzer-ID. Wenn Supervisor als Root-Benutzer gestartet wird,
setuid diesem Benutzer so schnell wie möglich beim Start zuordnen.
-m OKTAL, --umask=OKTAL
Oktalzahl (z. B. 022), die die Umask darstellt, die verwendet werden soll Supervisor
nachdem es angefangen hat.
-d PATH, --Verzeichnis=PATH
Wenn Supervisord als Daemon ausgeführt wird, wechseln Sie vor der Daemonisierung in dieses Verzeichnis.
-l FILE, --logfile=FILE
Dateiname, Pfad zur Verwendung als Supervisor-Aktivitätsprotokoll.
-y BYTE, --logfile_maxbytes=BYTE
Maximale Größe der Supervisor-Aktivitätsprotokolldatei, bevor eine Rotation stattfindet. Der Wert
wird mit dem Suffix multipliziert, z. B. „1“ ist ein Byte, „1 MB“ ist 1 Megabyte, „1 GB“ ist 1
Gigabyte.
-y NUM, --logfile_backups=NUM
Anzahl der aufzubewahrenden Sicherungskopien des Supervisor-Aktivitätsprotokolls. Jede
Die Protokolldatei wird von der Größe sein logfile_maxbytes.
-e LEVEL, --loglevel=LEVEL
Die Protokollierungsstufe, mit der der Supervisor in das Aktivitätsprotokoll schreiben soll. Gültig
Ebenen sind Spur, debuggen, Info, warnen, Fehler und kritischem.
-j FILE, --pidfile=FILE
Der Dateiname, in den der Supervisor seine PID-Datei schreiben soll.
-i STRING, --identifier=STRING
Beliebiger Zeichenfolgenbezeichner, der von verschiedenen Client-Benutzeroberflächen für diese Instanz von bereitgestellt wird
Supervisor.
-q PATH, --childlogdir=PATH
Ein Pfad zu einem Verzeichnis (es muss bereits vorhanden sein), in das der Supervisor seine Einträge schreiben wird AUTO
-mode untergeordnete Prozessprotokolle.
-k, --nocleanup
Vorbeugen Supervisor von der Durchführung einer Bereinigung (Entfernung alter AUTO Prozessprotokolldateien)
am Anfang.
-a NUM, --minfds=NUM
Die Mindestanzahl an Dateideskriptoren, die dem Supervisor zur Verfügung stehen müssen
Prozess, bevor er erfolgreich gestartet werden kann.
-t, --strip_ansi
Entfernen Sie ANSI-Escape-Sequenzen aus allen untergeordneten Protokollprozessen.
-v, --Version
Geben Sie die Versionsnummer des Supervisors in stdout aus und beenden Sie das Programm.
--profile_options=LISTE
Durch Kommas getrennte Optionsliste für die Profilerstellung. Ursachen Supervisor unter a laufen
Profiler und gibt Ergebnisse basierend auf den Optionen aus, bei denen es sich um eine durch Kommas getrennte Liste handelt
der folgenden: kumulativ, Anrufe, Anrufer. Z.B kumulativ, Anrufer.
--minprocs=NUM
Die Mindestanzahl von OS-Prozess-Slots, die dem Supervisor zur Verfügung stehen müssen
Prozess, bevor er erfolgreich gestartet werden kann.
Supervisorctl Befehlszeile Optionen
-c, --Aufbau
Pfad der Konfigurationsdatei (Standard /etc/supervisord.conf)
-h, --help
Nutzungsmeldung drucken und beenden
-i, --interaktiv
Starten Sie eine interaktive Shell, nachdem Sie Befehle ausgeführt haben
-s,--serverurl URL
URL, auf der der Supervisord-Server lauscht (Standard „http://localhost: 9001").
-u, --Nutzername
Benutzername, der für die Authentifizierung beim Server verwendet werden soll
-p, --Passwort
Passwort zur Authentifizierung beim Server
-r, --history-datei
Führen Sie einen Readline-Verlauf (sofern Readline verfügbar ist).
Aktion [Argumente]
Aktionen sind Befehle wie „tail“ oder „stop“. Wenn -i angegeben ist oder keine Aktion angegeben ist
Auf der Befehlszeile wird eine „Shell“ gestartet, die interaktiv eingegebene Aktionen interpretiert. Verwenden
die Aktion „Hilfe“, um sich über verfügbare Aktionen zu informieren.
Laufen Supervisorctl
So starten Supervisorctl, Lauf $BINDIR/supervisorctl. Dazu wird eine Hülle präsentiert
ermöglichen Ihnen die Steuerung der Prozesse, die derzeit verwaltet werden Supervisor. Geben Sie „Hilfe“ ein
an der Eingabeaufforderung, um Informationen zu den unterstützten Befehlen zu erhalten.
Das Supervisorctl Die ausführbare Datei kann mit „einmaligen“ Befehlen aufgerufen werden, wenn sie mit aufgerufen wird
Argumente aus einer Befehlszeile. Ein Beispiel: Supervisorctl halt alle. Wenn es Argumente gibt
Wenn in der Befehlszeile ein Befehl vorhanden ist, wird verhindert, dass die interaktive Shell aufgerufen wird.
Stattdessen wird der Befehl ausgeführt und Supervisorctl wird aussteigen.
If Supervisorctl wird im interaktiven Modus gegen a aufgerufen Supervisor Das benötigt
Bei der Authentifizierung werden Sie nach Authentifizierungsdaten gefragt.
Signale
Das Supervisor Dem Programm können Signale gesendet werden, die es veranlassen, bestimmte Aktionen auszuführen
während es läuft.
Sie können jedes dieser Signale an die Single senden Supervisor Prozess ID. Diese Prozess-ID
finden Sie in der Datei, die durch dargestellt wird pid-Datei Parameter in der [Betreuer] Abschnitt
der Konfigurationsdatei (standardmäßig ist es $CWD/supervisord.pid).
Signal Handler
ZIELLAUFZEIT
Supervisor und alle seine Unterprozesse werden heruntergefahren. Dies kann mehrere Sekunden dauern.
SIGINT
Supervisor und alle seine Unterprozesse werden heruntergefahren. Dies kann mehrere Sekunden dauern.
SO VIEL
Supervisor und alle seine Unterprozesse werden heruntergefahren. Dies kann mehrere Sekunden dauern.
SEUFZEND
Supervisor stoppt alle Prozesse und lädt die Konfiguration aus der ersten Konfiguration neu
Datei, die es findet, und starten Sie alle Prozesse neu.
SIGUSR2
Supervisor schließt das Hauptaktivitätsprotokoll und alle untergeordneten Protokolldateien und öffnet es erneut.
Laufzeit Sicherheit
Die Entwickler haben ihr Bestes getan, um die Verwendung von a sicherzustellen Supervisor Prozess läuft als
root kann nicht zu einer unbeabsichtigten Rechteausweitung führen. Aber Vorbehalt leerer. Vorgesetzter ist
nicht so paranoid wie etwas wie DJ Bernsteins Daemontools, insofern Supervisor
ermöglicht in seiner Konfigurationsdatei beliebige Pfadangaben, zu denen sich Daten befinden können
geschrieben. Das Zulassen willkürlicher Pfadauswahl kann zu Schwachstellen durch Symlinks führen
Anschläge. Seien Sie vorsichtig, wenn Sie Pfade in Ihrer Konfiguration angeben. Stellen Sie sicher, dass die
Supervisor Die Konfigurationsdatei kann nicht von unprivilegierten Benutzern gelesen oder beschrieben werden
dass alle vom Supervisor-Paket installierten Dateien über einen „vernünftigen“ Dateiberechtigungsschutz verfügen
Einstellungen. Stellen Sie außerdem sicher, dass Ihre PYTHONPFAD ist vernünftig und das alles Python-Standard
Bibliotheksdateien verfügen über einen angemessenen Dateiberechtigungsschutz.
Laufen Supervisor Im Prinzip so, wie Sie es von Google Maps kennen. on Anfang
Wenn Sie eine Distributionspaketversion von Supervisor verwenden, sollte dies bereits der Fall sein
integriert in die Service-Management-Infrastruktur Ihrer Distribution.
Von Benutzern bereitgestellte Skripte für verschiedene Betriebssysteme finden Sie unter:
https://github.com/Supervisor/initscripts
Für den Fall, dass Sie nicht weiterkommen, gibt es bei Serverfault einige Antworten: Wie zu Im Prinzip so, wie Sie es von Google Maps kennen. Anfang
Supervisor on Linux (Ubuntu)
Konfiguration Reichen Sie das
Die Supervisor-Konfigurationsdatei wird üblicherweise benannt supervisord.conf. Es wird verwendet von
beide Supervisor und Supervisorctl. Wenn eine der Anwendungen ohne gestartet wird -c
Option (die Option, die verwendet wird, um der Anwendung den Namen der Konfigurationsdatei mitzuteilen).
explizit), sucht die Anwendung nach einer Datei mit dem Namen supervisord.conf innerhalb der
folgenden Orten in der angegebenen Reihenfolge. Es wird die erste gefundene Datei verwenden.
1. $CWD/supervisord.conf
2. $CWD/etc/supervisord.conf
3. /etc/supervisord.conf
4. ../etc/supervisord.conf (Bezogen auf die ausführbare Datei)
5. ../supervisord.conf (Bezogen auf die ausführbare Datei)
Anmerkungen:
Einige Distributionen haben Supervisor mit eigenen Anpassungen verpackt. Diese
Modifizierte Versionen von Supervisor laden die Konfigurationsdatei möglicherweise von anderen Speicherorten
als die hier beschriebenen. Es wurden insbesondere Ubuntu-Pakete gefunden, die diese Funktion nutzen
/etc/supervisor/supervisord.conf.
Reichen Sie das Format
supervisord.conf ist eine Datei im Windows-INI-Stil (Python ConfigParser). Es hat Abschnitte (jeweils
bezeichnet mit a [Header]) und Schlüssel/Wert-Paare innerhalb der Abschnitte. Die Abschnitte und ihre
Die zulässigen Werte werden unten beschrieben.
Arbeitsumfeld Variablen
Umgebungsvariablen, die zu diesem Zeitpunkt in der Umgebung vorhanden sind Supervisor is
Gestartet kann in der Konfigurationsdatei mithilfe der Python-String-Ausdruckssyntax verwendet werden
%(ENV_X)s:
[Programm:Beispiel]
command=/usr/bin/example --loglevel=%(ENV_LOGLEVEL)s
Im obigen Beispiel der Ausdruck %(ENV_LOGLEVEL)s würde auf den Wert erweitert werden
die Umgebungsvariable LOGEBENE.
Anmerkungen:
In Supervisor 3.2 und höher: %(ENV_X)s Ausdrücke werden in allen Optionen unterstützt. In
In früheren Versionen werden sie von einigen Optionen unterstützt, von den meisten jedoch nicht. Weitere Informationen finden Sie in der Dokumentation
jede Option unten.
[unix_http_server] Abschnitt Einstellungen
Das supervisord.conf Die Datei enthält einen Abschnitt mit dem Namen [unix_http_server] unter welchen
Konfigurationsparameter für einen HTTP-Server, der auf einem UNIX-Domänen-Socket lauscht, sein sollten
eingefügt. Wenn die Konfigurationsdatei keine enthält [unix_http_server] Abschnitt, eine UNIX-Domäne
Der Socket-HTTP-Server wird nicht gestartet. Die zulässigen Konfigurationswerte sind wie folgt
folgt.
[unix_http_server] Abschnitt Werte
Datei
Ein Pfad zu einem UNIX-Domänen-Socket (z. B /tmp/supervisord.sock), auf welchen Vorgesetzten
Warten Sie auf HTTP/XML-RPC-Anfragen. Supervisorctl verwendet XML-RPC zur Kommunikation
Supervisor über diesen Hafen. Diese Option kann den Wert enthalten %(hier)s, was sich ausdehnt
in das Verzeichnis, in dem sich die Supervisor Konfigurationsdatei wurde gefunden.
Standard: Keine.
Erforderlich: Nein.
Eingeführt: 3.0
chmod
Ändern Sie die UNIX-Berechtigungsmodusbits des UNIX-Domänen-Sockets auf diesen Wert unter
Anfang.
Standard: 0700
Erforderlich: Nein.
Eingeführt: 3.0
chown
Ändern Sie den Benutzer und die Gruppe der Socket-Datei auf diesen Wert. Möglicherweise ein UNIX-Benutzername
(z.B Chrisma) oder ein durch einen Doppelpunkt getrennter UNIX-Benutzername und eine Gruppe (z. B Chrisma: Rad).
Standard: Verwenden Sie den Benutzernamen und die Gruppe des Benutzers, der supervisord startet.
Erforderlich: Nein.
Eingeführt: 3.0
Benutzername
Der für die Authentifizierung bei diesem HTTP-Server erforderliche Benutzername.
Standard: Kein Benutzername erforderlich.
Erforderlich: Nein.
Eingeführt: 3.0
Passwort
Das für die Authentifizierung bei diesem HTTP-Server erforderliche Passwort. Dies kann ein Klartext sein
Passwort oder kann als SHA-1-Hash angegeben werden, wenn ihm die Zeichenfolge vorangestellt wird {SHA}. For
Beispiel {SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d ist die SHA-gespeicherte Version von
Passwort „thepassword“.
Beachten Sie, dass das gehashte Passwort im Hexadezimalformat vorliegen muss.
Standard: Kein Passwort erforderlich.
Erforderlich: Nein.
Eingeführt: 3.0
[unix_http_server] Abschnitt Beispiel
[unix_http_server]
Datei = /tmp/supervisor.sock
chmod = 0777
chown=niemand:keineGruppe
Benutzername = Benutzer
Passwort = 123
[inet_http_server] Abschnitt Einstellungen
Das supervisord.conf Die Datei enthält einen Abschnitt mit dem Namen [inet_http_server] unter welchen
Konfigurationsparameter für einen HTTP-Server, der auf einem TCP-(Internet-)Socket lauscht
eingefügt werden. Wenn die Konfigurationsdatei keine enthält [inet_http_server] Abschnitt, ein inet HTTP
Der Server wird nicht gestartet. Die zulässigen Konfigurationswerte sind wie folgt.
[inet_http_server] Abschnitt Werte
port
Ein TCP-Host:Port-Wert oder (z. B 127.0.0.1:9001), auf den der Vorgesetzte hören wird
HTTP/XML-RPC-Anfragen. Supervisorctl wird XML-RPC zur Kommunikation verwenden Supervisor
über diesen Hafen. Um alle Schnittstellen in der Maschine abzuhören, verwenden Sie : 9001 or *:9001.
Standard: Kein Standard.
Erforderlich: Ja.
Eingeführt: 3.0
Benutzername
Der für die Authentifizierung bei diesem HTTP-Server erforderliche Benutzername.
Standard: Kein Benutzername erforderlich.
Erforderlich: Nein.
Eingeführt: 3.0
Passwort
Das für die Authentifizierung bei diesem HTTP-Server erforderliche Passwort. Dies kann ein Klartext sein
Passwort oder kann als SHA-1-Hash angegeben werden, wenn ihm die Zeichenfolge vorangestellt wird {SHA}. For
Beispiel {SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d ist die SHA-gespeicherte Version von
Passwort „thepassword“.
Beachten Sie, dass das gehashte Passwort im Hexadezimalformat vorliegen muss.
Standard: Kein Passwort erforderlich.
Erforderlich: Nein.
Eingeführt: 3.0
[inet_http_server] Abschnitt Beispiel
[inet_http_server]
Port = 127.0.0.1:9001
Benutzername = Benutzer
Passwort = 123
[Betreuer] Abschnitt Einstellungen
Das supervisord.conf Die Datei enthält einen Abschnitt mit dem Namen [Betreuer] in welchen globalen Einstellungen
verwandt mit Supervisor Prozess eingefügt werden soll. Diese lauten wie folgt.
[Betreuer] Abschnitt Werte
Logdatei
Der Pfad zum Aktivitätsprotokoll des Supervisord-Prozesses. Diese Option kann Folgendes umfassen:
Wert %(hier)s, das in das Verzeichnis erweitert wird, in dem sich die Supervisord-Konfiguration befindet
Datei wurde gefunden.
Standard: $CWD/supervisord.log
Erforderlich: Nein.
Eingeführt: 3.0
logfile_maxbytes
Die maximale Anzahl an Bytes, die von der Aktivitätsprotokolldatei verbraucht werden dürfen, bevor dies der Fall ist
gedreht (Suffixmultiplikatoren wie „KB“, „MB“ und „GB“ können im Wert verwendet werden). Satz
Setzen Sie diesen Wert auf 0, um eine unbegrenzte Protokollgröße anzugeben.
Standard: 50MB
Erforderlich: Nein.
Eingeführt: 3.0
logfile_backups
Die Anzahl der Backups, die aufgrund der Rotation der Aktivitätsprotokolldateien aufbewahrt werden müssen. Wenn festgelegt
auf 0, es werden keine Backups gespeichert.
Standard: 10
Erforderlich: Nein.
Eingeführt: 3.0
loglevel
Die Protokollierungsstufe bestimmt, was in das Aktivitätsprotokoll des Supervisors geschrieben wird. Einer von
kritischem, Fehler, warnen, Info, debuggen, Spur, oder auch quasseln. Beachten Sie dies auf Protokollebene debuggen,
Die Supervisord-Protokolldatei zeichnet die stderr/stdout-Ausgabe ihrer untergeordneten Prozesse auf
und erweiterte Informationen zu Prozessstatusänderungen, die für das Debuggen von nützlich sind
Prozess, der nicht richtig startet. Siehe auch:activity_log_levels.
Standard: die Info
Erforderlich: Nein.
Eingeführt: 3.0
pid-Datei
Der Speicherort, an dem supervisord seine PID-Datei speichert. Diese Option kann Folgendes umfassen:
Wert %(hier)s, das in das Verzeichnis erweitert wird, in dem sich die Supervisord-Konfiguration befindet
Datei wurde gefunden.
Standard: $CWD/supervisord.pid
Erforderlich: Nein.
Eingeführt: 3.0
umask
Die Umask des Supervisord-Prozesses.
Standard: 022
Erforderlich: Nein.
Eingeführt: 3.0
Nodaemon
Wenn „true“, startet supervisord im Vordergrund, anstatt zu dämonisieren.
Standard: FALSCH
Erforderlich: Nein.
Eingeführt: 3.0
minfds
Die Mindestanzahl an Dateideskriptoren, die verfügbar sein müssen, bevor Supervisord dies tut
erfolgreich starten. Es wird ein Aufruf von setrlimit durchgeführt, um zu versuchen, die Soft- und zu erhöhen
harte Grenzen des Supervisord-Prozesses zu erfüllen minfds. Die harte Grenze darf nur sein
wird ausgelöst, wenn Supervisord als Root ausgeführt wird. Supervisord verwendet Dateideskriptoren großzügig und
geht in einen Fehlermodus über, wenn einer vom Betriebssystem nicht abgerufen werden kann, daher ist es sinnvoll, dies zu tun
Sie können einen Mindestwert angeben, um sicherzustellen, dass sie während der Ausführung nicht ausgehen.
Diese Option ist besonders nützlich unter Solaris, wo es ein niedriges fd-Limit pro Prozess gibt
default.
Standard: 1024
Erforderlich: Nein.
Eingeführt: 3.0
Minprocs
Die Mindestanzahl an Prozessdeskriptoren, die vor Supervisord verfügbar sein müssen
wird erfolgreich gestartet. Es wird ein Aufruf von setrlimit durchgeführt, um zu versuchen, den Soft zu erhöhen
und harte Grenzen des Supervisord-Prozesses, die es zu erfüllen gilt Minprocs. Die harte Grenze kann
wird nur ausgelöst, wenn Supervisord als Root ausgeführt wird. Der Vorgesetzte wechselt in den Fehlermodus
Wenn dem Betriebssystem die Prozessdeskriptoren ausgehen, ist es sinnvoll, dafür zu sorgen, dass genügend vorhanden sind
Prozessbeschreibungen sind verfügbar Supervisor Anfang.
Standard: 200
Erforderlich: Nein.
Eingeführt: 3.0
keine Bereinigung
Verhindern Sie, dass der Vorgesetzte vorhandene Dateien löscht AUTO untergeordnete Protokolldateien beim Start.
Nützlich zum Debuggen.
Standard: FALSCH
Erforderlich: Nein.
Eingeführt: 3.0
Kinderlogverzeichnis
Das Verzeichnis, für das verwendet wird AUTO untergeordnete Protokolldateien. Diese Option kann den Wert enthalten
%(hier)s, das auf das Verzeichnis erweitert wird, in dem sich die Supervisor Konfigurationsdatei
wurde gefunden.
Standard: Wert von Python tempfile.get_tempdir()
Erforderlich: Nein.
Eingeführt: 3.0
Benutzer
Anweisen Supervisor Um Benutzer auf dieses UNIX-Benutzerkonto umzustellen, bevor Sie etwas unternehmen
sinnvolle Verarbeitung. Der Benutzer kann nur gewechselt werden, wenn Supervisor wird als gestartet
Root-Benutzer. Wenn Supervisor Der Benutzer kann nicht gewechselt werden, es wird trotzdem fortgesetzt, aber es wird ein geschrieben
Log-Nachricht am kritischem Ebene, die besagt, dass Privilegien nicht gelöscht werden können.
Standard: Benutzer nicht wechseln
Erforderlich: Nein.
Eingeführt: 3.0
Verzeichnis
Wann Supervisor dämonisiert, wechseln Sie in dieses Verzeichnis. Diese Option kann Folgendes umfassen:
Wert %(hier)s, das auf das Verzeichnis erweitert wird, in dem sich die Supervisor Konfiguration
Datei wurde gefunden.
Standard: nicht cd
Erforderlich: Nein.
Eingeführt: 3.0
strip_ansi
Entfernen Sie alle ANSI-Escape-Sequenzen aus untergeordneten Protokolldateien.
Standard: FALSCH
Erforderlich: Nein.
Eingeführt: 3.0
-Umgebung
Eine Liste von Schlüssel/Wert-Paaren im Formular KEY="val",KEY2="val2" das wird in der platziert
Supervisor Prozessumgebung (und damit in allen untergeordneten Prozessen)
Umgebungen). Diese Option kann den Wert enthalten %(hier)s, was sich auf die erweitert
Verzeichnis, in dem die Supervisord-Konfigurationsdatei gefunden wurde. Werte enthalten
Nicht alphanumerische Zeichen sollten in Anführungszeichen gesetzt werden (z KEY="val:123",KEY2="val,456").
Ansonsten ist die Angabe der Werte optional, wird aber empfohlen. Prozent entkommen
Zeichen, verwenden Sie einfach zwei. (z.B URI="/first%%20name") Note dass Unterprozesse dies tun werden
erbt die Umgebungsvariablen der Shell, die zum Starten verwendet wurde Supervisor mit Ausnahme der
diejenigen, die hier und innerhalb des Programms überschrieben werden -Umgebung Möglichkeit. Sehen
subprocess_environment.
Standard: keine Werte
Erforderlich: Nein.
Eingeführt: 3.0
Kennzeichnung
Die Kennungszeichenfolge für diesen Supervisor-Prozess, die von der RPC-Schnittstelle verwendet wird.
Standard: Aufsicht
Erforderlich: Nein.
Eingeführt: 3.0
[Betreuer] Abschnitt Beispiel
[Betreuer]
logfile = /tmp/supervisord.log
logfile_maxbytes = 50 MB
logfile_backups=10
loglevel = info
pidfile = /tmp/supervisord.pid
Nodaemon = false
minfds = 1024
Minprocs = 200
umask = 022
Benutzer = Chrism
Identifikator = Vorgesetzter
Verzeichnis = / Tmp
nocleanup = wahr
childlogdir = / Tmp
strip_ansi = false
Umgebung = KEY1="value1",KEY2="value2"
[Supervisorctl] Abschnitt Einstellungen
Die Konfigurationsdatei kann Einstellungen für enthalten Supervisorctl interaktive Shell
Programm. Diese Optionen sind unten aufgeführt.
[Supervisorctl] Abschnitt Werte
Server-URL
Die URL, die für den Zugriff auf den Supervisord-Server verwendet werden soll, z. B
http://localhost: 9001. Für UNIX-Domänensockets verwenden Sie
unix:///absolute/path/to/file.sock.
Standard: http://localhost: 9001
Erforderlich: Nein.
Eingeführt: 3.0
Benutzername
Der Benutzername, der zur Verwendung bei der Authentifizierung an den Supervisord-Server übergeben wird. Das sollte
gleich sein wie Benutzername aus der Supervisor-Serverkonfiguration für den Port oder UNIX
Domänen-Socket, auf den Sie zugreifen möchten.
Standard: Kein Benutzername
Erforderlich: Nein.
Eingeführt: 3.0
Passwort
Das Passwort, das zur Verwendung bei der Authentifizierung an den Supervisord-Server übergeben wird. Das sollte
sei die Klartextversion von Passwort aus der Supervisord-Serverkonfiguration für die
Port oder UNIX-Domänen-Socket, auf den Sie zugreifen möchten. Dieser Wert kann nicht als übergeben werden
ein SHA-Hash. Im Gegensatz zu anderen in dieser Datei angegebenen Passwörtern muss es in angegeben werden
Klartext.
Standard: Kein Passwort
Erforderlich: Nein.
Eingeführt: 3.0
Eingabeaufforderung
Zeichenfolge, die als Supervisorctl-Eingabeaufforderung verwendet wird.
Standard: Supervisor
Erforderlich: Nein.
Eingeführt: 3.0
History_file
Ein Pfad zur Verwendung als readline persistente Verlaufsdatei. Wenn Sie diese Funktion aktivieren, indem Sie
Wenn Sie einen Pfad auswählen, bleiben Ihre Supervisorctl-Befehle in der Datei erhalten und Sie können sie verwenden
readline (z. B. Pfeil nach oben), um Befehle aufzurufen, die Sie in Ihrem letzten Supervisorctl ausgeführt haben
Session.
Standard: Keine Datei
Erforderlich: Nein.
Eingeführt: 3.0a5
[Supervisorctl] Abschnitt Beispiel
[Supervisorctl]
serverurl = unix:///tmp/supervisor.sock
Benutzername = Chris
Passwort = 123
prompt = meinVorgesetzter
[Programm:x] Abschnitt Einstellungen
Die Konfigurationsdatei muss eine oder mehrere enthalten Programm Abschnitte in der richtigen Reihenfolge für den Vorgesetzten
um zu wissen, welche Programme es starten und steuern soll. Der Header-Wert ist ein zusammengesetzter Wert.
Es handelt sich um das Wort „Programm“, direkt gefolgt von einem Doppelpunkt und dem Programmnamen. Ein Header
Wert von [Programm:foo] beschreibt ein Programm mit dem Namen „foo“. Der Name wird verwendet
innerhalb von Client-Anwendungen, die die dadurch entstehenden Prozesse steuern
Aufbau. Es ist ein Fehler, einen zu erstellen Programm Abschnitt, der keinen Namen hat. Der
Der Name darf weder einen Doppelpunkt noch eine Klammer enthalten. Der Wert des Namens ist
als Wert für verwendet %(Programmname)s String-Ausdruckserweiterung innerhalb anderer Werte
wo angegeben.
Anmerkungen:
A [Programm:x] Der Abschnitt stellt für den Vorgesetzten tatsächlich eine „homogene Prozessgruppe“ dar
(ab 3.0). Die Mitglieder der Gruppe werden durch die Kombination der definiert Numprocs
und Vorgangsname Parameter in der Konfiguration. Wenn numprocs und
Prozessname bleibt gegenüber den Standardwerten unverändert, die Gruppe, die durch dargestellt wird
[Programm:x] wird benannt x und wird einen einzelnen Prozess mit dem Namen haben x drin. Diese
bietet ein Mindestmaß an Abwärtskompatibilität mit älteren Supervisor-Versionen, was auch der Fall war
Behandeln Sie Programmabschnitte nicht als homogene Prozessgruppendefinitionen.
Aber zum Beispiel, wenn Sie eine haben [Programm:foo] Abschnitt mit a Numprocs von 3 und a
Vorgangsname Ausdruck von %(Programmname)s_%(Prozessnummer)02d, die „foo“-Gruppe wird es tun
enthalten drei Prozesse mit dem Namen foo_00, foo_01 und foo_02. Dies macht es möglich
Starten Sie eine Reihe sehr ähnlicher Prozesse mit einem einzigen [Programm:x] Abschnitt. Alle
Protokolldateinamen, alle Umgebungszeichenfolgen und der Befehl von Programmen können ebenfalls enthalten sein
ähnliche Python-String-Ausdrücke, um jeweils leicht unterschiedliche Parameter zu übergeben
[Programm:x] Abschnitt Werte
Befehl
Der Befehl, der ausgeführt wird, wenn dieses Programm gestartet wird. Der Befehl kann entweder sein
absolut (z.B /Pfad/zu/Programmname) oder relativ (z. B Programmname). Wenn es so ist
relativ, die Umgebung des Vorgesetzten $ PATH wird nach der ausführbaren Datei durchsucht.
Programme können Argumente akzeptieren, z /pfad/zu/programm foo Bar. Die Befehlszeile kann verwendet werden
doppelte Anführungszeichen, um Argumente mit Leerzeichen zu gruppieren und sie an das Programm zu übergeben, z. B
/Pfad/zum/Programm/Name -p „foo Bar". Beachten Sie, dass der Wert von Befehl kann Python enthalten
Zeichenfolgenausdrücke, z /Pfad/zu/Programmname --port=80%(process_num)02d könnte sich erweitern
zu /Pfad/zu/Programmname --port=8000 zur Laufzeit. String-Ausdrücke werden ausgewertet
gegen ein Wörterbuch, das die Schlüssel enthält Gruppenname, host_node_name, Prozessnummer,
Programmname, HIER (das Verzeichnis der Supervisord-Konfigurationsdatei) und alle
Umgebungsvariablen des Supervisors mit dem Präfix ENV_. Kontrollierte Programme sollten
selbst keine Dämonen, da Supervisord davon ausgeht, dass es für die Dämonisierung seiner Daten verantwortlich ist
Unterprozesse (siehe nondaemonizing_of_subprocesses).
Standard: Kein Standard.
Erforderlich: Ja.
Eingeführt: 3.0
Vorgangsname
Ein Python-String-Ausdruck, der zum Zusammenstellen des Supervisor-Prozessnamens dafür verwendet wird
Verfahren. Normalerweise müssen Sie sich über die Einstellung dieser Einstellung keine Gedanken machen, es sei denn, Sie ändern sie
Numprocs. Der Zeichenfolgenausdruck wird anhand eines Wörterbuchs ausgewertet, das Folgendes enthält
Gruppenname, host_node_name, Prozessnummer, Programmname und HIER (das Verzeichnis der
Supervisord-Konfigurationsdatei).
Standard: %(Programmname)s
Erforderlich: Nein.
Eingeführt: 3.0
Numprocs
Der Supervisor startet so viele Instanzen dieses Programms, wie von numprocs benannt werden. Notiz
dass, wenn numprocs > 1, die Vorgangsname Der Ausdruck muss enthalten %(process_num)s (oder irgendein
anderer gültiger Python-String-Ausdruck, der Folgendes enthält: Prozessnummer) darin.
Standard: 1
Erforderlich: Nein.
Eingeführt: 3.0
numprocs_start
Ein ganzzahliger Offset, der zur Berechnung der Zahl verwendet wird, bei der Numprocs beginnt
Standard: 0
Erforderlich: Nein.
Eingeführt: 3.0
Prioritätsliste
Die relative Priorität des Programms in der Reihenfolge beim Starten und Herunterfahren. Untere
Prioritäten geben Programme an, die beim Start und wann zuerst gestartet und zuletzt heruntergefahren werden
Aggregate-Befehle werden in verschiedenen Clients verwendet (z. B. „Alle starten“/„Alle stoppen“). Höher
Prioritäten geben Programme an, die zuletzt gestartet und zuerst beendet werden.
Standard: 999
Erforderlich: Nein.
Eingeführt: 3.0
Auto-Start
Wenn „true“, wird dieses Programm automatisch gestartet, wenn Supervisord gestartet wird.
Standard: wahr
Erforderlich: Nein.
Eingeführt: 3.0
Startsekunden
Die Gesamtzahl der Sekunden, die das Programm nach einem Start benötigt, um weiter ausgeführt zu werden
Betrachten Sie den Start als erfolgreich (Verschieben des Prozesses von BEGINNEND Staat zu den
LAUFEN Zustand). Einstellen 0 um anzuzeigen, dass das Programm nicht länger ausgeführt werden muss
bestimmte Zeitspanne.
Anmerkungen:
Auch wenn ein Prozess mit einem „erwarteten“ Exit-Code beendet wird (siehe Exitcodes), der Anfang
wird immer noch als Fehler gewertet, wenn der Prozess schneller beendet wird als Startsekunden.
Standard: 1
Erforderlich: Nein.
Eingeführt: 3.0
Startversuche
Die Anzahl der Serienfehlerversuche Supervisor wird es zulassen, wenn man es versucht
Starten Sie das Programm, bevor Sie aufgeben und den Prozess in Angriff nehmen FATAL Zustand. Sehen
process_states zur Erläuterung der FATAL Zustand.
Standard: 3
Erforderlich: Nein.
Eingeführt: 3.0
automatischer Neustart
Gibt an, ob Supervisor sollte einen Prozess automatisch neu starten, wenn er beendet wird, wenn er beendet wird
in England, LAUFEN Zustand. Könnte einer davon sein falsch, unerwartet, oder auch was immer dies auch sein sollte.. Wenn falsch, der Prozess
wird nicht automatisch neu gestartet. Wenn unerwartet, der Prozess wird neu gestartet, wenn die
Das Programm wird mit einem Exit-Code beendet, der nicht einer der damit verbundenen Exit-Codes ist
Prozesskonfiguration (siehe Exitcodes). Wenn was immer dies auch sein sollte., der Prozess wird bedingungslos sein
wird beim Beenden neu gestartet, ohne Rücksicht auf den Exit-Code.
Anmerkungen:
automatischer Neustart steuert, ob Supervisor startet ein Programm automatisch neu, wenn es beendet wird
nach erfolgreichem Start (der Prozess befindet sich im LAUFEN Zustand).
Supervisor verfügt über einen anderen Neustartmechanismus für den Prozessstart
(Der Prozess ist in der BEGINNEND Zustand). Wiederholungsversuche während des Prozessstarts sind möglich
kontrolliert von Startsekunden und Startversuche.
Standard: unerwartet
Erforderlich: Nein.
Eingeführt: 3.0
Exitcodes
Die Liste der „erwarteten“ Exit-Codes für dieses Programm, das mit verwendet wird automatischer Neustart. Wenn der
automatischer Neustart Parameter ist auf gesetzt unerwartet, und der Prozess wird auf andere Weise beendet als
infolge einer Stoppanforderung des Vorgesetzten, Supervisor wird den Prozess neu starten, wenn dies der Fall ist
wird mit einem Exit-Code beendet, der in dieser Liste nicht definiert ist.
Standard: 0,2
Erforderlich: Nein.
Eingeführt: 3.0
Stoppsignal
Das Signal, das zum Beenden des Programms verwendet wird, wenn ein Stopp angefordert wird. Dies kann ein beliebiger Begriff sein: TERM,
HUP, INT, QUIT, KILL, USR1 oder USR2.
Standard: BEGRIFF
Erforderlich: Nein.
Eingeführt: 3.0
stopwaitsecs
Die Anzahl der Sekunden, die darauf gewartet wird, dass das Betriebssystem ein SIGCHILD zurückgibt Supervisor nach dem
Dem Programm wurde ein Stoppsignal gesendet. Wenn diese Anzahl an Sekunden vorher verstrichen ist
Supervisor erhält ein SIGCHILD aus dem Prozess, Supervisor werde versuchen, es zu töten
mit einem letzten SIGKILL.
Standard: 10
Erforderlich: Nein.
Eingeführt: 3.0
stopasgroup
Wenn „true“, veranlasst das Flag den Supervisor, das Stoppsignal an die gesamte Prozessgruppe zu senden
und impliziert killasgroup ist wahr. Dies ist nützlich für Programme wie Flask im Debug
Modus, der keine Stoppsignale an ihre Kinder weitergibt und sie somit verwaist zurücklässt.
Standard: FALSCH
Erforderlich: Nein.
Eingeführt: 3.0b1
killasgroup
Wenn „true“, wenn Sie SIGKILL an das Programm senden, um es zu beenden, senden Sie es an sein Programm
stattdessen die gesamte Prozessgruppe, die sich auch um ihre untergeordneten Elemente kümmert, nützlich z. B. mit
Python-Programme verwenden Mehrfachverarbeitung.
Standard: FALSCH
Erforderlich: Nein.
Eingeführt: 3.0a11
Benutzer
Anweisen Supervisor um dieses UNIX-Benutzerkonto als das Konto zu verwenden, das das ausführt
Programm. Der Benutzer kann nur gewechselt werden, wenn Supervisor wird als Root-Benutzer ausgeführt. Wenn
Supervisor Kann nicht zum angegebenen Benutzer wechseln, wird das Programm nicht gestartet.
Anmerkungen:
Der Benutzer wird mit geändert setuid nur. Dadurch wird keine Login-Shell gestartet und
ändert keine Umgebungsvariablen wie USER or STARTSEITE. Sehen
Weitere Informationen finden Sie in subprocess_environment.
Standard: Benutzer nicht wechseln
Erforderlich: Nein.
Eingeführt: 3.0
Redirect_stderr
Wenn „true“, bewirkt, dass die stderr-Ausgabe des Prozesses an zurückgesendet wird Supervisor auf seinem stdout
Dateideskriptor (in UNIX-Shell-Begriffen entspricht dies dem Ausführen /das Programm
2> & 1).
Anmerkungen:
Nicht festlegen weitergeleitet_stderr=true in eine [eventlistener:x] Abschnitt. Eventlistener
- stdout und Standard kommunizieren mit Supervisor. Wenn stderr wird umgeleitet,
Ausgabe von stderr stört das Eventlistener-Protokoll.
Standard: FALSCH
Erforderlich: Nein.
Eingeführt: 3.0, ersetzt 2.0 log_stdout und log_stderr
stdout_logfile
Fügen Sie die stdout-Ausgabe des Prozesses in diese Datei ein (und wenn „redirect_stderr“ wahr ist, platzieren Sie auch
stderr-Ausgabe in dieser Datei). Wenn stdout_logfile ist nicht gesetzt oder auf eingestellt AUTO, Aufsicht
wählt automatisch einen Dateispeicherort aus. Wenn dies eingestellt ist NONE, Vorgesetzter wird
Keine Protokolldatei erstellen. AUTO Protokolldateien und deren Backups werden gelöscht, wenn Supervisor
startet neu. Der stdout_logfile value kann Python-String-Ausdrücke enthalten, die dies tun
anhand eines Wörterbuchs ausgewertet, das die Schlüssel enthält Gruppenname, host_node_name,
Prozessnummer, Programmname und HIER (das Verzeichnis der Supervisord-Konfigurationsdatei).
Anmerkungen:
Es ist nicht möglich, dass zwei Prozesse eine einzige Protokolldatei gemeinsam nutzen (stdout_logfile)
wenn Drehung (stdout_logfile_maxbytes) aktiviert. Dadurch entsteht die Datei
korrupt sein.
Standard: AUTO
Erforderlich: Nein.
Eingeführt: 3.0, ersetzt 2.0 Logdatei
stdout_logfile_maxbytes
Die maximale Anzahl an Bytes, die von verbraucht werden dürfen stdout_logfile bevor es gedreht wird
(Suffix-Multiplikatoren wie „KB“, „MB“ und „GB“ können im Wert verwendet werden). Stellen Sie dies ein
Wert auf 0, um eine unbegrenzte Protokollgröße anzugeben.
Standard: 50MB
Erforderlich: Nein.
Eingeführt: 3.0, ersetzt 2.0 logfile_maxbytes
stdout_logfile_backups
Die Anzahl der stdout_logfile Sicherungen, die aus dem Standardprotokoll des Prozesses resultieren
Dateirotation. Bei der Einstellung 0 werden keine Backups gespeichert.
Standard: 10
Erforderlich: Nein.
Eingeführt: 3.0, ersetzt 2.0 logfile_backups
stdout_capture_maxbytes
Maximale Anzahl an Bytes, die in den Erfassungs-FIFO geschrieben werden, wenn sich der Prozess im „Standardausgabe-Erfassungsmodus“ befindet.
(siehe Capture_mode). Sollte eine Ganzzahl sein (Suffix-Multiplikatoren wie „KB“, „MB“ und „GB“)
kann im Wert verwendet werden). Wenn dieser Wert 0 ist, ist der Prozesserfassungsmodus deaktiviert.
Standard: 0
Erforderlich: Nein.
Eingeführt: 3.0, ersetzt 2.0 logfile_backups
stdout_events_enabled
Wenn „true“, werden PROCESS_LOG_STDOUT-Ereignisse ausgegeben, wenn der Prozess darauf schreibt
stdout-Dateideskriptor. Die Ereignisse werden nur ausgegeben, wenn der Dateideskriptor nicht vorhanden ist
zum Zeitpunkt des Datenempfangs im Capture-Modus (siehe Capture_mode).
Standard: 0
Erforderlich: Nein.
Eingeführt: 3.0a7
stderr_logfile
Fügen Sie die stderr-Ausgabe des Prozesses in diese Datei ein, sofern nicht Redirect_stderr ist wahr. Akzeptiert die
Gleiche Werttypen wie stdout_logfile und können dieselben Python-String-Ausdrücke enthalten.
Anmerkungen:
Es ist nicht möglich, dass zwei Prozesse eine einzige Protokolldatei gemeinsam nutzen (stderr_logfile)
wenn Drehung (stderr_logfile_maxbytes) aktiviert. Dadurch entsteht die Datei
korrupt sein.
Standard: AUTO
Erforderlich: Nein.
Eingeführt: 3.0
stderr_logfile_maxbytes
Die maximale Anzahl von Bytes vor der Protokolldateirotation für stderr_logfile. Akzeptiert die
Gleiche Werttypen wie stdout_logfile_maxbytes.
Standard: 50MB
Erforderlich: Nein.
Eingeführt: 3.0
stderr_logfile_backups
Die Anzahl der Backups, die aufgrund der Rotation der stderr-Protokolldatei des Prozesses aufbewahrt werden müssen.
Bei der Einstellung 0 werden keine Backups gespeichert.
Standard: 10
Erforderlich: Nein.
Eingeführt: 3.0
stderr_capture_maxbytes
Maximale Anzahl an Bytes, die in den Capture-FIFO geschrieben werden, wenn sich der Prozess im „stderr-Capture-Modus“ befindet.
(siehe Capture_mode). Sollte eine Ganzzahl sein (Suffix-Multiplikatoren wie „KB“, „MB“ und „GB“)
kann im Wert verwendet werden). Wenn dieser Wert 0 ist, ist der Prozesserfassungsmodus deaktiviert.
Standard: 0
Erforderlich: Nein.
Eingeführt: 3.0
stderr_events_enabled
Wenn „true“, werden PROCESS_LOG_STDERR-Ereignisse ausgegeben, wenn der Prozess darauf schreibt
stderr-Dateideskriptor. Die Ereignisse werden nur ausgegeben, wenn der Dateideskriptor nicht vorhanden ist
zum Zeitpunkt des Datenempfangs im Capture-Modus (siehe Capture_mode).
Standard: FALSCH
Erforderlich: Nein.
Eingeführt: 3.0a7
-Umgebung
Eine Liste von Schlüssel/Wert-Paaren im Formular KEY="val",KEY2="val2" das wird in der platziert
Umgebung des untergeordneten Prozesses. Die Umgebungszeichenfolge kann eine Python-Zeichenfolge enthalten
Ausdrücke, die anhand eines Wörterbuchs ausgewertet werden Gruppenname,
host_node_name, Prozessnummer, Programmname und HIER (das Verzeichnis des Betreuers
Konfigurationsdatei). Werte, die nicht alphanumerische Zeichen enthalten, sollten in Anführungszeichen gesetzt werden (z
KEY="val:123",KEY2="val,456"). Ansonsten ist die Angabe der Werte optional, aber
empfohlen. Note dass der Unterprozess die Umgebungsvariablen des erbt
Shell, die zum Starten von „supervisord“ verwendet wurde, mit Ausnahme der hier überschriebenen. Sehen
subprocess_environment.
Standard: Keine zusätzliche Umgebung
Erforderlich: Nein.
Eingeführt: 3.0
Verzeichnis
Ein Dateipfad, der ein Verzeichnis darstellt, zu dem Supervisor sollte vorübergehend chdir
bevor man das Kind ausführt.
Standard: Kein chdir (Vorgesetzten übernehmen)
Erforderlich: Nein.
Eingeführt: 3.0
umask
Eine Oktalzahl (z. B. 002, 022), die die Umask des Prozesses darstellt.
Standard: Keine spezielle umask (Vorgesetzten übernehmen)
Erforderlich: Nein.
Eingeführt: 3.0
Server-URL
Die URL, die in der Umgebung an den Unterprozessprozess übergeben wurde als SUPERVISOR_SERVER_URL
(sehen supervisor.childutils), damit der Unterprozess problemlos mit dem kommunizieren kann
interner HTTP-Server. Falls angegeben, sollte es dieselbe Syntax und Struktur wie das haben
[Supervisorctl] Abschnittsoption mit demselben Namen. Wenn dies auf AUTO eingestellt ist oder nicht konfiguriert ist,
Der Supervisor erstellt automatisch eine Server-URL und gibt einem Server den Vorzug
das auf UNIX-Domänen-Sockets lauscht, statt auf einem, das auf einem Internet-Socket lauscht.
Standard: AUTO
Erforderlich: Nein.
Eingeführt: 3.0
[Programm:x] Abschnitt Beispiel
[Programm:Katze]
Befehl =/bin/kat
Prozessname=%(Programmname)s
numprocs=1
Verzeichnis=/ Tmp
umaske=022
Priorität = 999
Autostart = true
automatischer Neustart=unerwartet
Startsekunden=10
startretries=3
Exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=chrism
weitergeleitet_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1 MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1 MB
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1 MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1 MB
stderr_events_enabled=false
Umgebung=A="1",B="2"
serverurl=AUTO
[enthalten] Abschnitt Einstellungen
Das supervisord.conf Die Datei kann einen Abschnitt mit dem Namen enthalten [enthalten]. Wenn die Konfiguration
Datei enthält eine [enthalten] Abschnitt muss er einen einzelnen Schlüssel mit dem Namen „files“ enthalten. Der
Werte in diesem Schlüssel geben andere Konfigurationsdateien an, die in den eingeschlossen werden sollen
Konfiguration.
[enthalten] Abschnitt Werte
Dateien
Eine durch Leerzeichen getrennte Folge von Datei-Globs. Jeder Datei-Glob kann absolut oder relativ sein.
Wenn der Datei-Glob relativ ist, wird er als relativ zum Speicherort betrachtet
Konfigurationsdatei, die es enthält. Ein „Glob“ ist ein Dateimuster, das mit a übereinstimmt
angegebenen Muster gemäß den von der Unix-Shell verwendeten Regeln. Es gibt keine Tilde-Erweiterung
erledigt, aber *, ?, und Zeichenbereiche ausgedrückt mit [] werden korrekt zugeordnet.
Rekursive Einbindungen aus eingebundenen Dateien werden nicht unterstützt.
Standard: Kein Standard (erforderlich)
Erforderlich: Ja.
Eingeführt: 3.0
[enthalten] Abschnitt Beispiel
[enthalten]
files = /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf
[Gruppe:x] Abschnitt Einstellungen
Oft ist es sinnvoll, „homogene“ Prozessgruppen (auch „Programme“ genannt) zu einer Gruppe zusammenzufassen
„heterogene“ Prozessgruppe, sodass sie als Einheit vom Vorgesetzten gesteuert werden können
verschiedene Controller-Schnittstellen.
Um Programme in einer Gruppe zu platzieren, sodass Sie sie als Einheit behandeln können, definieren Sie a [Gruppe:x] Abschnitt
in Ihrer Konfigurationsdatei. Der Gruppenkopfwert ist ein zusammengesetzter Wert. Es ist das Wort
„Gruppe“, direkt gefolgt von einem Doppelpunkt und dann dem Gruppennamen. Ein Headerwert von [Gruppe:foo]
beschreibt eine Gruppe mit dem Namen „foo“. Der Name wird innerhalb von Clientanwendungen verwendet
die die Prozesse steuern, die als Ergebnis dieser Konfiguration erstellt werden. Es ist ein
Fehler beim Erstellen eines Gruppe Abschnitt, der keinen Namen hat. Der Name darf kein enthalten
Doppelpunkt oder Klammerzeichen.
Für einen [Gruppe:x], es muss einen oder mehrere geben [Programm:x] Abschnitte an anderer Stelle in Ihrem
Konfigurationsdatei, und die Gruppe muss in der namentlich auf sie verweisen Programme Wert.
Werden „homogene“ Prozessgruppen (repräsentiert durch Programmabschnitte) in a
„heterogene“ Gruppe über [Gruppe:x] Abschnitte Programme Linie, die homogenen Gruppen, die
werden impliziert, dass der Programmabschnitt zur Laufzeit im Supervisor nicht vorhanden ist. Stattdessen alle
Prozesse, die zu jeder der homogenen Gruppen gehören, werden in die eingeordnet
heterogene Gruppe. Beispiel: Bei folgender Gruppenkonfiguration:
[Gruppe:foo]
Programme=bar,baz
Priorität = 999
Angesichts des oben Gesagten wird beim Start des Supervisors die Bar und baz Homogene Gruppen werden dies nicht tun
existieren, und die Prozesse, die unter ihnen gestanden hätten, werden nun in die verschoben foo
Gruppe.
[Gruppe:x] Abschnitt Werte
Programme
Eine durch Kommas getrennte Liste von Programmnamen. Die aufgeführten Programme werden Mitglieder
aus der Gruppe.
Standard: Kein Standard (erforderlich)
Erforderlich: Ja.
Eingeführt: 3.0
Prioritätsliste
Eine Prioritätsnummer analog zu a [Programm:x] Der der Gruppe zugewiesene Prioritätswert.
Standard: 999
Erforderlich: Nein.
Eingeführt: 3.0
[Gruppe:x] Abschnitt Beispiel
[Gruppe:foo]
Programme=bar,baz
Priorität = 999
[fcgi-programm:x] Abschnitt Einstellungen
Der Vorgesetzte kann Gruppen verwalten SchnellCGI Prozesse, die alle am selben Socket lauschen.
Bisher war die Flexibilität bei der Bereitstellung von FastCGI begrenzt. Um den vollständigen Prozess zu erhalten
Management, Sie könnten mod_fastcgi unter Apache verwenden, aber dann blieben Sie bei Apache hängen
ineffizientes Parallelitätsmodell eines Prozesses oder Threads pro Verbindung. Zusätzlich zu
Das Prozess-/Thread-pro-Verbindungsmodell kann mehr CPU- und Speicherressourcen erfordern
wird durch eine langsame Ressource schnell gesättigt, wodurch verhindert wird, dass andere Ressourcen bedient werden. In
um die Vorteile neuerer ereignisgesteuerter Webserver wie lighttpd oder nginx zu nutzen
Wenn Sie keinen integrierten Prozessmanager einbinden, müssen Sie Skripte wie cgi-fcgi oder verwenden
spawn-fcgi. Diese können in Verbindung mit einem Prozessmanager wie Supervisord verwendet werden
oder daemontools, erfordern jedoch, dass jeder untergeordnete FastCGI-Prozess an seinen eigenen Socket gebunden wird. Der
Nachteile davon sind: unnötig komplizierte Webserver-Konfiguration, unangebracht
Neustarts und verringerte Fehlertoleranz. Mit weniger zu konfigurierenden Sockets, Webserver
Konfigurationen sind viel kleiner, wenn Gruppen von FastCGI-Prozessen Sockets gemeinsam nutzen können. Geteilt
Sockets ermöglichen ordnungsgemäße Neustarts, da der Socket weiterhin an den übergeordneten Prozess gebunden ist
während einer der untergeordneten Prozesse neu gestartet wird. Schließlich gibt es noch mehr Shared Sockets
Fehlertolerant, denn wenn ein bestimmter Prozess ausfällt, können andere Prozesse weiterhin ausgeführt werden
eingehende Verbindungen.
Mit der integrierten FastCGI-Spawning-Unterstützung bietet Ihnen Supervisor das Beste aus beiden Welten.
Sie erhalten eine umfassende Prozessverwaltung mit Gruppen von FastCGI-Prozessen, die sich Sockets teilen
ohne an einen bestimmten Webserver gebunden zu sein. Es ist eine saubere Trennung der Belange,
Dadurch können der Webserver und der Prozessmanager jeweils das tun, was sie am besten können.
Anmerkungen:
Der Socket-Manager in Supervisor wurde ursprünglich zur Unterstützung von FastCGI-Prozessen entwickelt
aber es ist nicht auf FastCGI beschränkt. Es können auch andere Protokolle ohne besondere Besonderheiten verwendet werden
Aufbau. Jedes Programm, das über einen Dateideskriptor (z. B. .) auf einen offenen Socket zugreifen kann
mit socket.fromfd in Python) können den Socket-Manager verwenden. Der Vorgesetzte wird
Erstellen Sie automatisch den Socket, binden Sie ihn und hören Sie ihn ab, bevor Sie das erste untergeordnete Element in a forken
Gruppe. Der Socket wird an jedes untergeordnete Element mit der Dateideskriptornummer weitergegeben 0 (Null).
Wenn das letzte Kind die Gruppe verlässt, schließt der Supervisor die Steckdose.
Alle verfügbaren Optionen [Programm:x] Abschnitte werden ebenfalls respektiert fcgi-Programm
.
[fcgi-programm:x] Abschnitt Werte
[fcgi-programm:x] Abschnitte haben einen einzigen Schlüssel, der [Programm:x] Abschnitte nicht haben.
Buchse
Der FastCGI-Socket für dieses Programm, entweder TCP- oder UNIX-Domänen-Socket. Für TCP-Sockets:
Verwenden Sie dieses Format: tcp://localhost:9002. Für UNIX-Domänensockets verwenden Sie
unix:///absolute/path/to/file.sock. Zeichenfolgenausdrücke werden anhand von a ausgewertet
Wörterbuch mit den Schlüsseln „Programmname“ und „Here“ (das Verzeichnis der
Supervisord-Konfigurationsdatei).
Standard: Kein Standard.
Erforderlich: Ja.
Eingeführt: 3.0
socket_owner
Für UNIX-Domänen-Sockets kann dieser Parameter verwendet werden, um den Benutzer und die Gruppe anzugeben
den FastCGI-Sockel. Kann ein UNIX-Benutzername (z. B. chrism) oder ein UNIX-Benutzername und eine UNIX-Gruppe sein
durch einen Doppelpunkt getrennt (z. B. chrism:wheel).
Standard: Verwendet den Benutzer- und Gruppensatz für das fcgi-Programm
Erforderlich: Nein.
Eingeführt: 3.0
socket_mode
Für UNIX-Domänen-Sockets kann dieser Parameter verwendet werden, um den Berechtigungsmodus anzugeben.
Standard: 0700
Erforderlich: Nein.
Eingeführt: 3.0
Konsultieren [Programm:x] Abschnitt Einstellungen Für andere zulässige Schlüssel gelten die oben genannten Einschränkungen
und Ergänzungen.
[fcgi-programm:x] Abschnitt Beispiel
[fcgi-programm:fcgiprogrammname]
command=/usr/bin/example.fcgi
socket=unix:///var/run/supervisor/%(program_name)s.sock
socket_owner=chrism
socket_mode=0700
Prozessname=%(Programmname)s_%(Prozessnummer)02d
numprocs=5
Verzeichnis=/ Tmp
umaske=022
Priorität = 999
Autostart = true
automatischer Neustart=unerwartet
Startsekunden=1
startretries=3
Exitcodes=0,2
Stoppsignal=QUIT
stopasgroup=false
killasgroup=false
stopwaitsecs=10
user=chrism
weitergeleitet_stderr=true
stdout_logfile=/a/path
stdout_logfile_maxbytes=1 MB
stdout_logfile_backups=10
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1 MB
stderr_logfile_backups=10
stderr_events_enabled=false
Umgebung=A="1",B="2"
serverurl=AUTO
[eventlistener:x] Abschnitt Einstellungen
Supervisor ermöglicht die Bildung spezialisierter homogener Prozessgruppen („Ereignis-Listener-Pools“)
in der Konfigurationsdatei definiert. Diese Pools enthalten Prozesse, die dazu bestimmt sind
Empfangen und Beantworten von Ereignisbenachrichtigungen vom Ereignissystem des Vorgesetzten. Siehe Veranstaltungen für
eine Erklärung, wie Ereignisse funktionieren und wie Programme implementiert werden, die als deklariert werden können
Ereignis-Listener.
Beachten Sie, dass alle Optionen verfügbar sind [Programm:x] Abschnitte werden von Eventlistener respektiert
Abschnitte ausgeschlossen für den stdout_capture_maxbytes und stderr_capture_maxbytes (Ereignis-Listener
kann keine Prozesskommunikationsereignisse ausgeben, siehe capture_mode).
[eventlistener:x] Abschnitt Werte
[eventlistener:x] Abschnitte haben ein paar Schlüssel, die [Programm:x] Abschnitte nicht haben.
Puffergröße
Die Puffergröße der Ereigniswarteschlange des Ereignis-Listener-Pools. Wenn der Ereignispuffer eines Listener-Pools
ist übergelaufen (was passieren kann, wenn ein Ereignis-Listener-Pool nicht mit allen Schritten Schritt halten kann).
an ihn gesendete Ereignisse), wird das älteste Ereignis im Puffer verworfen.
Veranstaltungen
Eine durch Kommas getrennte Liste von Ereignistypnamen, an denen dieser Listener „interessiert“ ist
Empfangen von Benachrichtigungen für (siehe event_types für eine Liste gültiger Ereignistypnamen).
result_handler
A pkg_resources Eintrag Punkt Schnur das wird zu einem Python-Callable aufgelöst. Der Standard
Wert ist supervisor.dispatchers:default_handler. Angeben eines alternativen Ergebnisses
Handler ist eine sehr ungewöhnliche Sache, und daher ist es auch so, wie man einen solchen erstellt
nicht dokumentiert.
Konsultieren [Programm:x] Abschnitt Einstellungen Für andere zulässige Schlüssel gelten die oben genannten Einschränkungen
und Ergänzungen.
[eventlistener:x] Abschnitt Beispiel
[eventlistener:theeventlistenername]
command=/bin/eventlistener
Prozessname=%(Programmname)s_%(Prozessnummer)02d
numprocs=5
events=PROCESS_STATE
buffer_size=10
Verzeichnis=/ Tmp
umaske=022
Priorität=-1
Autostart = true
automatischer Neustart=unerwartet
Startsekunden=1
startretries=3
Exitcodes=0,2
Stoppsignal=QUIT
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=chrism
weitergeleitet_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1 MB
stdout_logfile_backups=10
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1 MB
stderr_logfile_backups=10
stderr_events_enabled=false
Umgebung=A="1",B="2"
serverurl=AUTO
[rpcinterface:x] Abschnitt Einstellungen
Hinzufügen rpcinterface:x Einstellungen in der Konfigurationsdatei sind nur für Personen nützlich, die
Ich möchte den Supervisor um zusätzliches benutzerdefiniertes Verhalten erweitern.
In der Beispielkonfigurationsdatei gibt es einen Abschnitt mit dem Namen [rpcinterface:supervisor].
Standardmäßig sieht es wie folgt aus.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
Das [rpcinterface:supervisor] Abschnitt sollen bleiben in der Konfiguration für den Standard
Einrichtung des Supervisors, um ordnungsgemäß zu funktionieren. Wenn Sie nicht möchten, dass der Vorgesetzte etwas tut, tun Sie es
Dies ist nicht bereits von Haus aus möglich. Dies ist alles, was Sie über diese Art von wissen müssen
.
Wenn Sie jedoch RPC-Schnittstellen-Namespaces hinzufügen möchten, um Supervisor anzupassen, müssen Sie Folgendes tun
kann weitere hinzufügen [rpcinterface:foo] Abschnitte, wobei „foo“ den Namespace von darstellt
die Schnittstelle (vom Webstamm) und der von benannte Wert supervisor.rpcinterface_factory
ist ein Factory-Callable, der eine Funktionssignatur haben sollte, die eine einzelne akzeptiert
Positionsargument Supervisor und so viele Schlüsselwortargumente, wie für die Ausführung erforderlich sind
Aufbau. Alle zusätzlichen Schlüssel/Wert-Paare, die innerhalb definiert sind [rpcinterface:x] Abschnitt wird
als Schlüsselwortargumente an die Factory übergeben werden.
Hier ist ein Beispiel für eine Factory-Funktion, die in erstellt wurde __init__.py Datei des Python
Paket mein Paket.
aus my.package.rpcinterface AnotherRPCInterface importieren
def make_another_rpcinterface(supervisord, **config):
retries = int(config.get('retries', 0))
another_rpc_interface = AnotherRPCInterface(supervisord, retries)
Gibt eine andere_rpc_interface zurück
Und ein Abschnitt in der Konfigurationsdatei, der dazu gedacht ist, es zu konfigurieren.
[rpcinterface:andere]
supervisor.rpcinterface_factory = my.package:make_another_rpcinterface
Wiederholungen = 1
[rpcinterface:x] Abschnitt Werte
supervisor.rpcinterface_factory
pkg_resources Punktname „Einstiegspunkt“ für die Factory-Funktion Ihrer RPC-Schnittstelle.
Standard: N / A
Erforderlich: Nein.
Eingeführt: 3.0
[rpcinterface:x] Abschnitt Beispiel
[rpcinterface:andere]
supervisor.rpcinterface_factory = my.package:make_another_rpcinterface
Wiederholungen = 1
Unterprozesse
SupervisorDer Hauptzweck von ist die Erstellung und Verwaltung von Prozessen auf der Grundlage der darin enthaltenen Daten
Konfigurationsdatei. Dies geschieht durch die Erstellung von Unterprozessen. Jeder von erzeugte Unterprozess
Supervisor wird während seiner gesamten Lebensdauer von supervisord verwaltet (Supervisor ist das
übergeordneter Prozess jedes von ihm erstellten Prozesses). Wenn ein Kind stirbt, wird der Vorgesetzte benachrichtigt
sein Tod durch die SIGCHLD Signal und führt den entsprechenden Vorgang aus.
Nicht dämonisierend of Unterprozesse
Programme, die unter Supervisor ausgeführt werden sollen, sollten sich nicht selbst dämonisieren. Stattdessen sie
sollte im Vordergrund laufen. Sie sollten sich nicht von dem Terminal lösen, von dem sie stammen
werden gestartet.
Der einfachste Weg, um festzustellen, ob ein Programm im Vordergrund ausgeführt wird, ist die Ausführung des Befehls that
Ruft das Programm über eine Shell-Eingabeaufforderung auf. Wenn es Ihnen die Kontrolle über das Terminal zurückgibt,
läuft aber weiter, dämonisiert sich selbst und das wird mit ziemlicher Sicherheit falsch sein
Möglichkeit, es unter Aufsicht auszuführen. Sie möchten einen Befehl ausführen, der Sie im Wesentlichen erfordert
drücken Strg-C um die Kontrolle über das Terminal zurückzugewinnen. Wenn Sie eine Shell-Eingabeaufforderung erhalten, erhalten Sie eine Rückmeldung
nachdem Sie es ausgeführt haben, ohne dass Sie drücken müssen Strg-C, es ist unter Vorgesetzten nicht nützlich. Alle
Programme haben die Möglichkeit, im Vordergrund ausgeführt zu werden, aber es gibt keine „Standardmethode“ dafür;
Sie müssen die Dokumentation für jedes Programm lesen.
Nachfolgend finden Sie Beispiele für Konfigurationsdateien, in denen bekanntermaßen gängige Programme gestartet werden
„Vordergrund“-Modus unter Supervisor.
Beispiele of Mentessa for Good Konfigurationen
Hier sind einige Beispiele für die Programmkonfiguration aus der „realen Welt“:
Apache 2.2.6
[Programm:Apache2]
command=/path/to/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
weitergeleitet_stderr=true
Zwei Zope 2.X Instanzen und dank One ZEO Server
[Programm:zeo]
command=/path/to/runzeo
Priorität = 1
[Programm:zope1]
command=/path/to/instance/home/bin/runzope
Priorität = 2
weitergeleitet_stderr=true
[Programm:zope2]
command=/path/to/another/instance/home/bin/runzope
Priorität = 2
weitergeleitet_stderr=true
Postgres 8.X
[Programm:Postgres]
command=/path/to/postmaster
; Wir verwenden das „schnelle“ Shutdown-Signal SIGINT
Stoppsignal=INT
weitergeleitet_stderr=true
OpenLDAP schlagen
[Programm:slapd]
command=/path/to/slapd -f /path/to/slapd.conf -h ldap://0.0.0.0:8888
weitergeleitet_stderr=true
Andere Beispiele
Weitere Beispiele für Shell-Skripte, die zum Starten von Diensten verwendet werden könnten Supervisor können.
zu finden unter http://thedjbway.b0llix.net/services.html. Diese Beispiele sind eigentlich für
Daemontools Aber die Prämisse ist für den Vorgesetzten dieselbe.
Eine weitere Sammlung von Rezepten zum Starten verschiedener Programme im Vordergrund ist verfügbar
von http://smarden.org/runit/runscripts.html.
pidproxy Mentessa for Good
Einige Prozesse (wie mysqld) Ignoriere Signale, die an den eigentlichen Prozess gesendet werden, der von erzeugt wird
Supervisor. Stattdessen wird durch diese Art von Programmen ein "spezieller" Thread/Prozess erstellt
die für den Umgang mit Signalen zuständig ist. Das ist problematisch, weil Supervisor können.
nur einen Prozess beenden, den es selbst erstellt. Wenn ein Prozess erstellt von Supervisor schafft
eigene untergeordnete Prozesse, Supervisor kann sie nicht töten.
Glücklicherweise schreiben diese Arten von Programmen normalerweise eine "pidfile", die die
"spezielle" Prozess-PID und soll gelesen und verwendet werden, um den Prozess zu beenden. Wie
ein Workaround für diesen Fall, ein spezielles pidproxy Programm kann Starts dieser Art verarbeiten
von Prozessen. Die pidproxy Programm ist ein kleines Shim, das einen Prozess startet, und nach dem
Empfang eines Signals, sendet das Signal an die in einer PID-Datei bereitgestellte PID. Eine Probe
Ein Konfigurationsprogrammeintrag für ein pidproxy-fähiges Programm wird unten bereitgestellt.
[programm:mysql]
command=/path/to/pidproxy /path/to/pidfile /path/to/mysqld_safe
Das pidproxy Programm wird in Ihre Konfiguration eingefügt $BINDIR wenn Supervisor installiert ist
(es ist ein "Konsolenskript").
Unterprozess Arbeitsumfeld
Unterprozesse erben die Umgebung der Shell, die zum Starten des Prozesses verwendet wurde Supervisor
Programm. Mehrere Umgebungsvariablen werden von festgelegt Supervisor sich im Kindesalter
Umwelt auch, einschließlich SUPERVISOR_ENABLED (ein Flag, das angibt, dass der Prozess ausgeführt wird
Vorgesetztenkontrolle), SUPERVISOR_PROCESS_NAME (Der in der Konfigurationsdatei angegebene Prozessname für
dieser Prozess) und SUPERVISOR_GROUP_NAME (Der in der Konfigurationsdatei angegebene Prozessgruppenname für
der untergeordnete Prozess).
Diese Umgebungsvariablen können innerhalb der überschrieben werden [Betreuer] Abschnittskonfiguration
Option benannt -Umgebung (gilt für alle Teilprozesse) oder innerhalb der Per- [Programm:x]
Abschnitt -Umgebung config-Option (gilt nur für den in der angegebenen Unterprozess).
[Programm:x] Abschnitt). Diese „Umgebungs“-Einstellungen sind additiv. Mit anderen Worten, jeder
Die Umgebung des Unterprozesses besteht aus:
Die in der Shell festgelegten Umgebungsvariablen, die zum Starten von Supervisord verwendet werden ...
... hinzugefügt/überschrieben von ...
... -Umgebung Variablen kompensieren . -Umgebung globale
Konfigurationsoption ...
... hinzugefügt/überschrieben von ...
... Vorgesetztenspezifisch -Umgebung Variablen
(SUPERVISOR_ENABLED, SUPERVISOR_PROCESS_NAME, SUPERVISOR_GROUP_NAME) ..
... hinzugefügt/überschrieben von ...
... -Umgebung Variablen kompensieren . pro Prozess
Konfigurationsoption „Umgebung“.
Es wird keine Shell ausgeführt Supervisor wenn ein Unterprozess ausgeführt wird, also Umgebungsvariablen
sowie USER, PATH, STARTSEITE, SHELL, LOGNAMEusw. werden nicht von ihren Standardeinstellungen geändert oder
ansonsten neu zugewiesen. Dies ist besonders wichtig zu beachten, wenn Sie eine ausführen
Programm von a Supervisor Als Root ausführen mit a Benutzer= Strophe in der Konfiguration. nicht wie
cron, Supervisor versucht nicht, die „fundamentale“ Umwelt vorherzusagen und außer Kraft zu setzen
Variablen wie USER, PATH, STARTSEITE und LOGNAME wenn es eine Setuid an den Benutzer ausführt
innerhalb der Benutzer= Programmkonfigurationsoption. Wenn Sie Umgebungsvariablen für a festlegen müssen
ein bestimmtes Programm, das andernfalls durch einen Shell-Aufruf für ein bestimmtes Programm festgelegt werden könnte
Benutzer müssen Sie dies explizit innerhalb der tun Umgebung= Programmkonfigurationsoption. Ein Beispiel
Die Einstellung dieser Umgebungsvariablen erfolgt wie folgt.
[Programm:Apache2]
command=/home/chrism/bin/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
user=chrism
Environment=HOME="/home/chrism",USER="chrism"
Prozess Staaten
Ein vom Vorgesetzten gesteuerter Prozess befindet sich zu jedem Zeitpunkt in einem der folgenden Zustände.
Sie können diese Statusnamen in verschiedenen Benutzeroberflächenelementen in Clients sehen.
GESTOPPT (0)
Der Prozess wurde aufgrund einer Stoppanforderung gestoppt oder nie gestartet.
BEGINNEND (10)
Der Prozess wird aufgrund einer Startanforderung gestartet.
LAUFEN (20)
Der Prozess läuft.
ZURÜCK (30)
Der Prozess trat ein BEGINNEND Zustand, wurde aber anschließend zu schnell verlassen, um dorthin zu gelangen
LAUFEN Zustand.
STOPPEN (40)
Der Prozess wird aufgrund einer Stoppanforderung angehalten.
VERLASSEN (100)
Der Prozess wurde beendet LAUFEN Zustand (erwartet oder unerwartet).
FATAL (200)
Der Prozess konnte nicht erfolgreich gestartet werden.
UNKNOWN (1000)
Der Prozess befindet sich in einem unbekannten Zustand (Supervisor Programmierfehler).
Jeder Prozess, der unter Supervisor ausgeführt wird, durchläuft diese Zustände wie folgt
gerichteter Graph.
[Bild: Unterprozess-Zustandsübergangsdiagramm] [Bild] Unterprozess-Zustandsübergang
Graph.UNINDENT
Ein Prozess ist in der GESTOPPT Geben Sie an, ob es administrativ gestoppt wurde oder ob dies der Fall ist
noch nie gestartet.
Wenn ein automatischer Neustartvorgang ausgeführt wird ZURÜCK Zustand, es wird automatisch sein
neu gestartet von Supervisor. Es wird zwischen umgeschaltet BEGINNEND und ZURÜCK Staaten bis es
Es wird deutlich, dass es aufgrund der Anzahl nicht gestartet werden kann Startversuche hat
Das Maximum wurde überschritten. An diesem Punkt erfolgt der Übergang zum FATAL Zustand. Jeder Start
Ein erneuter Versuch wird immer mehr Zeit in Anspruch nehmen.
Wenn ein Prozess in der VERLASSEN Status wird automatisch neu gestartet:
· niemals, wenn es so ist automatischer Neustart Parameter ist auf gesetzt falsch.
· bedingungslos, wenn es so ist automatischer Neustart Parameter ist auf gesetzt was immer dies auch sein sollte..
· bedingt, wenn es automatischer Neustart Parameter ist auf gesetzt unerwartet. Wenn es mit einem beendet wurde
Exit-Code, der nicht mit einem der im definierten Exit-Codes übereinstimmt Exitcodes
Wenn Sie den Konfigurationsparameter für den Prozess angeben, wird dieser neu gestartet.
Ein Prozess wechselt automatisch von VERLASSEN zu LAUFEN als Ergebnis der Konfiguration
um einen bedingten oder bedingungslosen automatischen Neustart durchzuführen. Die Anzahl der Übergänge zwischen
LAUFEN und VERLASSEN ist in keiner Weise eingeschränkt: Es ist möglich, eine Konfiguration zu erstellen
das einen beendeten Prozess endlos neu startet. Dies ist eine Funktion, kein Fehler.
Ein automatisch neu gestarteter Prozess wird niemals automatisch neu gestartet, wenn er im endet FATAL
Zustand (aus diesem Zustand muss manuell neu gestartet werden).
Ein Prozess geht in die über STOPPEN Staat über eine administrative Stoppanforderung und Willen
dann landet man in der GESTOPPT Zustand.
Ein Prozess, der nicht erfolgreich gestoppt werden kann, bleibt bestehen STOPPEN Zustand für immer.
Diese Situation sollte während des normalen Betriebs niemals erreicht werden, da dies impliziert, dass die
Der Prozess reagierte nicht auf ein Finale SIGKILL Signal, das vom Vorgesetzten an ihn gesendet wird
„unmöglich“ unter UNIX.
Zu den Zustandsübergängen, deren Aufruf immer eine Benutzeraktion erfordert, gehören:
FATAL -> BEGINNEND
LAUFEN -> STOPPEN
Zustandsübergänge, deren Aufruf normalerweise, aber nicht immer, eine Benutzeraktion erfordert, sind dies
diese, mit Ausnahmen angegeben:
GESTOPPT -> BEGINNEND (außer beim Supervisor-Start, wenn der Prozess für den automatischen Start konfiguriert ist)
VERLASSEN -> BEGINNEND (außer wenn der Prozess für einen automatischen Neustart konfiguriert ist)
Alle anderen Zustandsübergänge werden vom Supervisord automatisch verwaltet.
Protokollierung
Eine der Hauptaufgaben, die Supervisor ausführt, ist die Protokollierung. Supervisor protokolliert eine Aktivität
Protokoll, das detailliert beschreibt, was es während der Ausführung tut. Außerdem werden die untergeordneten Prozesse stdout und stderr protokolliert
Ausgabe in andere Dateien, sofern dies entsprechend konfiguriert ist.
Aktivität Log
Das Aktivitätsprotokoll ist der Ort, an dem Supervisor protokolliert Nachrichten über seinen eigenen Gesundheitszustand
Zustandsänderungen des Unterprozesses, alle Meldungen, die aus Ereignissen resultieren, sowie Debug- und
Informationsnachrichten. Der Pfad zum Aktivitätsprotokoll wird über konfiguriert Logdatei
Parameter in der [Betreuer] Abschnitt der Konfigurationsdatei, standardmäßig ist
$CWD/supervisord.log. Im folgenden Beispiel wird ein Beispiel für den Aktivitätsprotokollverkehr angezeigt. Manche
Die Linien wurden unterbrochen, um besser auf den Bildschirm zu passen.
Musteranfrage Aktivität Log Ausgang
2007-09-08 14:43:22,886 DEBG 127.0.0.1:Medusa (V1.11) gestartet am Sa. 8. Sep. 14:43:22 2007
Hostname: Kingfish
Hafen: 9001
2007-09-08 14:43:22,961 INFO RPC-Schnittstelle „Supervisor“ initialisiert
2007-09-08 14:43:22,961 CRIT Wird ohne HTTP-Authentifizierungsprüfung ausgeführt
2007-09-08 14:43:22,962 INFO Supervisord startete mit PID 27347
2007-09-08 14:43:23,965 INFO erzeugt: 'listener_00' mit PID 27349
2007-09-08 14:43:23,970 INFO erzeugt: „eventgen“ mit PID 27350
2007-09-08 14:43:23,990 INFO erzeugt: „grower“ mit PID 27351
2007-09-08 14:43:24,059 DEBG 'listener_00' stderr-Ausgabe:
/Users/chrism/projects/supervisor/supervisor2/dev-sandbox/bin/python:
Datei „/Users/chrism/projects/supervisor/supervisor2/src/supervisor/scripts/osx_eventgen_listener.py“ kann nicht geöffnet werden:
[Errno 2] Keine solche Datei oder kein solches Verzeichnis
2007-09-08 14:43:24,060 DEBG fd 7 geschlossen, Überwachung gestoppt
(stdout)>
2007-09-08 14:43:24,060 INFO beendet: listener_00 (Exit-Status 2; nicht erwartet)
2007-09-08 14:43:24,061 DEBG hat SIGCHLD erhalten, was darauf hinweist, dass ein Kind gekündigt hat
Die Aktivitätsprotokoll-„Stufe“ wird in der Konfigurationsdatei über konfiguriert loglevel Parameter in
[Betreuer] Abschnitt der INI-Datei. Wenn loglevel gesetzt ist, Nachrichten der angegebenen
Priorität sowie diejenigen mit höherer Priorität werden im Aktivitätsprotokoll protokolliert. Für
Beispiel, wenn loglevel is Fehler, Nachrichten von Fehler und kritischem Priorität wird protokolliert.
Allerdings, wenn loglevel ist warnen, Nachrichten von warnen, Fehler und kritischem wird protokolliert.
Aktivität Log Stufen
In der folgenden Tabelle werden die Protokollierungsstufen detaillierter beschrieben, geordnet nach höchster Priorität
zum niedrigsten. Der „Config File Value“ ist die Zeichenfolge, die dem bereitgestellt wird loglevel Parameter in
[Betreuer] Abschnitt der Konfigurationsdatei und der „Ausgabecode“ ist der Code, der
wird in den Ausgabezeilen des Aktivitätsprotokolls angezeigt.
┌──────────────────┬─────────────┬────── ────────── ──────────┐
│Wert der Konfigurationsdatei │ Ausgabecode │ Beschreibung │
├──────────────────┼─────────────┼────── ────────── ──────────┤
│kritisch │ CRIT │ Meldungen, die auf ein │ hinweisen
│ │ │ Bedingung, die │ erfordert
│ │ │ unmittelbarer Benutzer │
│ │ │ Achtung, ein Vorgesetzter │
│ │ │ Zustandsänderung oder ein │
│ │ │ Fehler im Vorgesetzten │
│ │ │ selbst. │
├──────────────────┼─────────────┼────── ────────── ──────────┤
│error │ ERRO │ Meldungen, die auf ein │ hinweisen
│ │ │ möglicherweise vernachlässigbar │
│ │ │ Fehlerzustand (z. B. │
│ │ │ Ein Protokoll konnte nicht gelöscht werden │
│ │ │ Verzeichnis). │
├──────────────────┼─────────────┼────── ────────── ──────────┤
│warn │ WARN │ Meldungen, die auf │ hinweisen
│ │ │ ein anomaler Zustand │
│ │ │ was kein Fehler ist. │
├──────────────────┼─────────────┼────── ────────── ──────────┤
│Info │ INFO │ Normale Information │
│ │ │ Ausgabe. Das ist das │
│ │ │ Standardprotokollstufe, wenn │
│ │ │ keine ist explizit │
│ │ │ konfiguriert. │
├──────────────────┼─────────────┼────── ────────── ──────────┤
│debug │ DEBG │ Nützliche Nachrichten für │
│ │ │ Benutzer versuchen zu debuggen │
│ │ │ Prozesskonfiguration │
│ │ │ und Kommunikation │
│ │ │ Verhalten (Prozess │
│ │ │ Ausgabe, Hörerstatus │
│ │ │ Änderungen, Ereignis │
│ │ │ Benachrichtigungen). │
├──────────────────┼─────────────┼────── ────────── ──────────┤
│Trace │ TRAC │ Nützliche Nachrichten für │
│ │ │ Entwickler versuchen │
│ │ │ Debug-Supervisor │
│ │ │ Plugins und Informationen │
│ │ │ über HTTP und RPC │
│ │ │ Anfragen und Antworten. │
├──────────────────┼─────────────┼────── ────────── ──────────┤
│blather │ BLAT │ Nützliche Nachrichten für │
│ │ │ Entwickler versuchen │
│ │ │ Debug-Supervisor selbst. │
└──────────────────┴─────────────┴────── ────────── ──────────┘
Aktivität Log Rotation
Das Aktivitätsprotokoll wird um „gedreht“. Supervisor basierend auf der Kombination der
logfile_maxbytes und den logfile_backups Parameter in der [Betreuer] Abschnitt der
Konfigurationsdatei. Wenn das Aktivitätsprotokoll erreicht logfile_maxbytes Bytes, das aktuelle Protokoll
Die Datei wird in eine Sicherungsdatei verschoben und eine neue Aktivitätsprotokolldatei erstellt. Wenn das passiert,
wenn die Anzahl der vorhandenen Sicherungsdateien größer oder gleich ist logfile_backups, der
Die älteste Sicherungsdatei wird entfernt und die Sicherungsdateien werden entsprechend umbenannt. Wenn die Datei
angeschrieben wird, wird benannt supervisord.log, wenn es überschreitet logfile_maxbytes, Es ist geschlossen
und umbenannt in supervisord.log.1, und if-Dateien supervisord.log.1, supervisord.log.2 usw.
existieren, dann werden sie umbenannt in supervisord.log.2, supervisord.log.3 usw. bzw.
If logfile_maxbytes 0 ist, wird die Protokolldatei nie rotiert (und daher werden nie Backups erstellt).
If logfile_backups 0 ist, werden keine Backups gespeichert.
Kind Prozess Logs
Die Standardausgabe der vom Supervisor erzeugten untergeordneten Prozesse wird standardmäßig zur erneuten Anzeige erfasst
an Benutzer von Supervisorctl und andere Kunden. Wenn keine spezifische Protokolldatei-bezogene Konfiguration vorhanden ist
wird in a durchgeführt [Programm:x], [fcgi-programm:x], oder auch [eventlistener:x] Abschnitt in der
Konfigurationsdatei ist Folgendes wahr:
· Supervisor erfasst die stdout- und stderr-Ausgabe des untergeordneten Prozesses temporär
Dateien. Jeder Stream wird in einer separaten Datei erfasst. Dies ist bekannt als AUTO Protokollmodus.
· AUTO Protokolldateien werden automatisch benannt und in dem als konfigurierten Verzeichnis abgelegt
Kinderlogverzeichnis dauert ebenfalls 3 Jahre. Das erste Jahr ist das sog. [Betreuer] Abschnitt der Konfigurationsdatei.
· Die Größe jedes einzelnen AUTO Die Protokolldatei ist durch die begrenzt {streamname}_logfile_maxbytes Wert von
der Programmabschnitt (wobei {streamname} „stdout“ oder „stderr“ ist). Wenn es das erreicht
Anzahl, es wird (wie das Aktivitätsprotokoll) basierend auf der rotiert
{streamname}_logfile_backups.
Die Konfigurationsschlüssel, die die Anmeldung untergeordneter Prozesse beeinflussen [Programm:x] und
[fcgi-programm:x] Abschnitte sind diese:
Redirect_stderr, stdout_logfile, stdout_logfile_maxbytes, stdout_logfile_backups,
stdout_capture_maxbytes, stderr_logfile, stderr_logfile_maxbytes, stderr_logfile_backups
und stderr_capture_maxbytes.
Man darf setzen stdout_logfile or stderr_logfile an die spezielle Zeichenfolge „syslog“. In diesem Fall,
Protokolle werden an den Syslog-Dienst weitergeleitet, anstatt in Dateien gespeichert zu werden.
[eventlistener:x] Abschnitte dürfen nicht angegeben werden Redirect_stderr, stdout_capture_maxbytes, oder auch
stderr_capture_maxbytes, aber ansonsten akzeptieren sie die gleichen Werte.
Die Konfigurationsschlüssel, die die Protokollierung untergeordneter Prozesse beeinflussen [Betreuer] Config
Dateiabschnitt sind diese: Kinderlogverzeichnis und keine Bereinigung.
Erfassung Model
Der Aufnahmemodus ist eine erweiterte Funktion von Supervisor. Sie müssen den Aufnahmemodus nicht verstehen
es sei denn, Sie möchten Maßnahmen ergreifen, die auf Daten basieren, die aus der Unterprozessausgabe analysiert wurden.
Sollten Sie jetzt aufgefordert werden, ein [Programm:x] Der Abschnitt in der Konfigurationsdatei definiert einen Wert ungleich Null
stdout_capture_maxbytes or stderr_capture_maxbytes Parameter, jeder Prozess wird dargestellt durch
Der Programmabschnitt kann spezielle Token in seinem stdout- bzw. stderr-Stream ausgeben.
was den Vorgesetzten effektiv dazu veranlassen wird, ein auszusenden PROZESS_KOMMUNIKATION Ereignis (siehe Ereignisse
für eine Beschreibung der Ereignisse).
Das Prozesskommunikationsprotokoll basiert auf zwei Tags, von denen einer den Supervisor dazu auffordert
Geben Sie den „Erfassungsmodus“ für den Stream ein und einen, der ihn zum Beenden anweist. Wenn ein Prozess
Der Stream wechselt in den „Erfassungsmodus“. Die an den Stream gesendeten Daten werden an einen separaten Puffer gesendet
Speicher, der „Capture-Puffer“, der maximal enthalten darf Capture_maxbytes
Bytes. Im Aufnahmemodus, wenn die Pufferlänge überschritten wird Capture_maxbytes Bytes, die
Die frühesten Daten im Puffer werden verworfen, um Platz für neue Daten zu schaffen. Wenn ein Prozessstrom
Verlässt den Aufnahmemodus, a PROZESS_KOMMUNIKATION Der Ereignisuntertyp wird vom Supervisor ausgegeben
kann von Ereignis-Listenern abgefangen werden.
Das Tag zum Starten des „Erfassungsmodus“ in einem Prozessstrom lautet . Das Tag
zum Verlassen des Aufnahmemodus ist . Die Daten zwischen diesen Tags können sein
beliebig und bildet die Nutzlast des PROZESS_KOMMUNIKATION Fall. Wenn zum Beispiel a
Das Programm wird mit einem eingerichtet stdout_capture_maxbytes von „1 MB“ und es wird Folgendes ausgegeben
sein Standard-Stream:
Hallo!
Unter diesen Umständen Supervisor wird a PROCESS_COMMUNICATIONS_STDOUT Veranstaltung mit
Daten in der Nutzlast von „Hallo!“.
Ein Beispiel für ein Skript (in Python geschrieben), das ein Prozesskommunikationsereignis ausgibt, finden Sie in
Skripte Verzeichnis des Supervisor-Pakets, benannt sample_commevent.py.
Die Ausgabe von Prozessen, die als „Ereignis-Listener“ angegeben sind ([eventlistener:x] Abschnitte) nicht
auf diese Weise verarbeitet. Die Ausgabe dieser Prozesse kann nicht in den Erfassungsmodus wechseln.
Erweitern Vorgesetzter XML-RPC API
Supervisor kann mit neuen XML-RPC-APIs erweitert werden. Es gibt bereits mehrere Plugins von Drittanbietern
vorhanden, die in Ihre Supervisor-Konfiguration integriert werden können. Sie können zusätzlich schreiben
dein eigenes. Erweiterbare XML-RPC-Schnittstellen sind eine erweiterte Funktion, die in der Version eingeführt wurde
3.0. Sie müssen es nicht verstehen, es sei denn, Sie möchten einen vorhandenen RPC eines Drittanbieters verwenden
Schnittstellen-Plugin oder wenn Sie Ihr eigenes RPC-Schnittstellen-Plugin schreiben möchten.
Konfigurieren XML-RPC Schnittstelle Fabriken
Eine zusätzliche RPC-Schnittstelle wird in einer Supervisor-Installation konfiguriert, indem eine hinzugefügt wird
[rpcinterface:x] Abschnitt in der Supervisor-Konfigurationsdatei.
In der Beispielkonfigurationsdatei gibt es einen Abschnitt mit dem Namen [rpcinterface:supervisor].
Standardmäßig sieht es so aus:
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
Dieser Abschnitt sollen Bleiben Sie in der Konfiguration, damit die Standardeinrichtung von Supervisor funktioniert
richtig. Wenn Sie nicht möchten, dass der Vorgesetzte etwas tut, was er nicht ohnehin schon tut
Im Kasten finden Sie alles, was Sie über diese Art von Abschnitt wissen müssen.
Wenn Sie jedoch einer Konfiguration von zusätzliche XML-RPC-Schnittstellen-Namespaces hinzufügen möchten
Vorgesetzter, Sie können weitere hinzufügen [rpcinterface:foo] Abschnitte, wobei „foo“ für die steht
Namespace der Schnittstelle (vom Webstamm) und der von benannte Wert
supervisor.rpcinterface_factory ist ein in Python geschriebener Factory-Callable, der dies tun sollte
eine Funktionssignatur, die ein einzelnes Positionsargument akzeptiert Supervisor und so viele
Schlüsselwortargumente nach Bedarf, um die Konfiguration durchzuführen. Alle definierten Schlüssel/Wert-Paare
innerhalb der rpcinterface:foo Abschnitt werden als Schlüsselwortargumente an die Factory übergeben.
Hier ist ein Beispiel einer Factory-Funktion, die im Paket erstellt wurde mein Paket.
def make_another_rpcinterface(supervisord, **config):
retries = int(config.get('retries', 0))
another_rpc_interface = AnotherRPCInterface(supervisord, retries)
Gibt eine andere_rpc_interface zurück
Und ein Abschnitt in der Konfigurationsdatei, der dazu gedacht ist, es zu konfigurieren.
[rpcinterface:andere]
supervisor.rpcinterface_factory = my.package:make_another_rpcinterface
Wiederholungen = 1
Glossar
Daemontools
A Prozessdefinierung Smartgeräte App System by DJ Bernstein.
launchd
A Prozessdefinierung Smartgeräte App System benutzt by Apple als Prozess 1 unter Mac OS X.
starte es A Prozessdefinierung Smartgeräte App System.
Superlanze
Ein Paket, das verschiedene Event-Listener-Implementierungen bereitstellt, die angeschlossen werden können
Supervisor, der bei der Überwachung der Prozessspeichernutzung und des Absturzstatus helfen kann:
http://pypi.python.org/pypi/superlance.
umask Abkürzung von Benutzer Maske": Legt die Dateimodus-Erstellungsmaske des aktuellen Prozesses fest.
Weitere Informationen finden Sie auch in den http://en.wikipedia.org/wiki/Umask.
API DOKUMENTATION
XML-RPC API Dokumentation
Um die XML-RPC-Schnittstelle zu verwenden, stellen Sie mit einem beliebigen XML-RPC-Client eine Verbindung zum HTTP-Port des Supervisors her
Bibliothek und führen Sie Befehle dafür aus. Ein Beispiel dafür mit Python xmlrpclib
Die Client-Bibliothek lautet wie folgt.
xmlrpclib importieren
server = xmlrpclib.Server('http://localhost:9001/RPC2')
Sie können Methoden dagegen aufrufen Supervisor und seine Unterprozesse mithilfe der Supervisor
Namensraum. Nachfolgend finden Sie ein Beispiel.
server.supervisor.getState()
Sie können eine Liste der von der unterstützten Methoden erhalten Supervisor XML-RPC-Schnittstelle unter Verwendung der
XML-RPC system.listMethods API:
server.system.listMethods()
Sie können Hilfe zu einer Methode anzeigen, indem Sie die verwenden system.methodHelp API gegen die Methode:
server.system.methodHelp('supervisor.shutdown')
Das Supervisor Die XML-RPC-Schnittstelle unterstützt auch die XML-RPC Mehrfachanruf API.
Sie können verlängern Supervisor Funktionalität mit neuen XML-RPC-API-Methoden durch Hinzufügen neuer
RPC-Schnittstellen der obersten Ebene nach Bedarf. Siehe rpcinterface_factories.
Anmerkungen:
Jeder XML-RPC-Methodenaufruf kann zu einer Fehlerantwort führen. Hierzu zählen auch Fehler, die durch verursacht wurden
dem Kunden, wie z. B. schlechte Argumente und etwaige Fehler Supervisor nicht
der Bitte nachkommen. Viele XML-RPC-Clientprogramme lösen bei einem Fehler eine Ausnahme aus
Antwort erfolgt.
Status und Control
Klasse supervisor.rpcinterface.SupervisorNamespaceRPCInterface(supervisord)
getAPIVersion()
Gibt die Version der vom Supervisord verwendeten RPC-API zurück
@return string version Versions-ID
Diese API wird separat von Supervisor selbst versioniert. Die API-Version
zurückgegeben von getAPIVersion ändert sich nur, wenn sich die API ändert. Sein Sinn
soll dem Client dabei helfen, die Version der Supervisor-API zu identifizieren
es kommuniziert.
Beim Schreiben von Software, die mit dieser API kommuniziert, ist dies von großer Bedeutung
Es wird empfohlen, die API-Version vorher zunächst auf Kompatibilität zu testen
Methodenaufrufe durchführen.
Anmerkungen:
Das getAPIVersion Methode ersetzt getVersion gefunden in Supervisor
Versionen vor 3.0a1. Aus Kompatibilitätsgründen wird es jedoch mit einem Alias versehen
getVersion() ist veraltet und die Unterstützung wird eingestellt
Supervisor in einer zukünftigen Version.
getSupervisorVersion()
Gibt die Version des Supervisor-Pakets zurück, die von Supervisord verwendet wird
@return string version Versions-ID
getIdentification()
Gibt die identifizierende Zeichenfolge des Supervisors zurück
@return String-Bezeichner, der den String identifiziert
Diese Methode ermöglicht es dem Client, die Supervisor-Instanz zu identifizieren
es kommuniziert im Fall von Umgebungen, in denen mehrere vorhanden sind
Es kann sein, dass Vorgesetzte kandidieren.
Die Identifikation ist eine Zeichenfolge, die im Supervisor festgelegt werden muss
Konfigurationsdatei. Diese Methode gibt diesen Wert einfach an zurück
Kunden.
getState()
Gibt den aktuellen Status von supervisord als Struktur zurück
@return struct Eine Struktur mit den Schlüsseln int statecode, string statename
Dies ist ein interner Wert, der vom Supervisor verwaltet wird und bestimmt, was
Der Supervisor geht davon aus, dass es sich um den aktuellen Betriebszustand handelt.
Einige Methodenaufrufe können den aktuellen Status des Supervisors ändern. Für
Beispiel: Aufruf der Methode supervisor.shutdown(), während die Station eingeschaltet ist
Der RUNNING-Status versetzt den Supervisor währenddessen in den SHUTDOWN-Status
Herunterfahren.
Die supervisor.getState()-Methode bietet dem Client eine Möglichkeit zur Überprüfung
Status des Vorgesetzten, sowohl zu Informationszwecken als auch um dies sicherzustellen
Die Methoden, die aufgerufen werden sollen, sind zulässig.
Der Rückgabewert ist eine Struktur:
{'statecode': 1,
'statename': 'RUNNING'}
Die möglichen Rückgabewerte sind:
┌──────────┬────────────┬─────────────── ────────── ─┐
│Staatscode │ Staatsname │ Beschreibung │
├──────────┼────────────┼─────────────── ────────── ─┤
│2 │ FATAL │ Vorgesetzter hat │
│ │ │ erlebte eine schwere │
│ │ │ Fehler. │
├──────────┼────────────┼─────────────── ────────── ─┤
│1 │ LÄUFT │ Vorgesetzter arbeitet │
│ │ │ normalerweise. │
├──────────┼────────────┼─────────────── ────────── ─┤
│0 │ NEUSTART │ Vorgesetzter ist im │
│ │ │ Vorgang des Neustarts. │
├──────────┼────────────┼─────────────── ────────── ─┤
│-1 │ ABSCHALTEN │ Vorgesetzter ist im │
│ │ │ Schließvorgang │
│ │ │ nach unten. │
└──────────┴────────────┴─────────────── ────────── ─┘
Das FATAL Der Status meldet nicht behebbare Fehler, beispielsweise interne Fehler
innerhalb von Supervisor- oder System-Runaway-Bedingungen. Einmal eingestellt FATAL, der
Der Supervisor kann niemals in einen anderen Zustand zurückkehren, ohne neu gestartet zu werden.
Im FATAL state, alle zukünftigen Methoden außer supervisor.shutdown() und
supervisor.restart() schlägt automatisch fehl, ohne aufgerufen zu werden, und die
Fehler FATAL_STATE wird angehoben.
Im Schließung or RESTARTIEREN Zustände, alle Methodenaufrufe werden ignoriert und
Ihre möglichen Rückgabewerte sind undefiniert.
getPID()
Gibt die PID des Supervisord zurück
@return int PID
readLog(offset, Länge)
Liest Längenbytes aus dem Hauptprotokoll, beginnend beim Offset
@param int offset Offset, ab dem mit dem Lesen begonnen werden soll. @param int
Länge Anzahl der aus dem Protokoll zu lesenden Bytes. @return-String
Ergebnis Bytes des Protokolls
Es kann entweder das gesamte Protokoll oder eine Reihe von Zeichen vom Ende zurückgeben
des Protokolls oder ein durch Offset und Länge angegebenes Segment des Protokolls
Parameter:
┌─────────────────┬──────────┬────────── ────────── ──────┐
│Offset │ Länge │ Verhalten von │
│ │ │ readProcessLog │
├─────────────────┼──────────┼────────── ────────── ──────┤
│Negativ │ Nicht Null │ Schlechte Argumente. Dies wird │
│ │ │ Fehler melden │
│ │ │ BAD_ARGUMENTS. │.
└─────────────────┴──────────┴────────── ────────── ──────┘
│Negativ │ Null │ Dadurch wird das │ zurückgegeben
│ │ │ Schwanz des Baumstamms, oder │
│ │ │ Offset-Nummer von │
│ │ │ Zeichen vom Ende │
│ │ │ des Protokolls. Für │
│ │ │ Beispiel, wenn Offset = -4 │
│ │ │ und Länge = 0, dann das │
│ │ │ letzte vier Zeichen │
│ │ │ wird von │ zurückgegeben
│ │ │ das Ende des Protokolls. │
├─────────────────┼──────────┼────────── ────────── ──────┤
│Null oder Positiv │ Negativ │ Schlechte Argumente. Dies wird │
│ │ │ Fehler melden │
│ │ │ BAD_ARGUMENTS. │.
├─────────────────┼──────────┼────────── ────────── ──────┤
│Null oder positiv │ Null │ Alle Zeichen sind │
│ │ │ zurück von der Offset │
│ │ │ angegeben. │
├─────────────────┼──────────┼────────── ────────── ──────┤
│Null oder positiv │ Positiv │ Eine Anzahl von Zeichen │
│ │ │ Länge wird zurückgegeben │
│ │ │ aus dem Offset. │.
└─────────────────┴──────────┴────────── ────────── ──────┘
Wenn das Protokoll leer ist und das gesamte Protokoll angefordert wird, ist eine leere Zeichenfolge vorhanden
ist zurückgekommen.
Wenn entweder der Versatz oder die Länge außerhalb des zulässigen Bereichs liegt, liegt ein Fehler vor BAD_ARGUMENTS werden wir
zurück.
Wenn das Protokoll nicht gelesen werden kann, löst diese Methode entweder das aus KEINE DATEI
Fehler, wenn die Datei nicht existiert oder die FAILED Fehler, wenn irgendein anderes Problem vorliegt
angetroffen wurde.
Anmerkungen:
Die readLog()-Methode ersetzt readMainLog() in Supervisor
Versionen vor 2.1. Aus Kompatibilitätsgründen wird es jedoch mit einem Alias versehen
readMainLog() ist veraltet und die Unterstützung wird eingestellt
Supervisor in einer zukünftigen Version.
Protokoll löschen()
Löschen Sie das Hauptprotokoll.
@return boolean result gibt immer True zurück, es sei denn, es liegt ein Fehler vor
Wenn das Protokoll nicht gelöscht werden kann, weil die Protokolldatei nicht vorhanden ist, wird die
Fehler KEINE DATEI wird erhöht. Wenn das Protokoll nicht für andere gelöscht werden kann
Grund, der Fehler FAILED wird angehoben.
ausschalten()
Beenden Sie den Supervisor-Prozess
@return boolean result gibt immer True zurück, es sei denn, es liegt ein Fehler vor
Diese Methode fährt den Supervisor-Daemon herunter. Wenn irgendwelche Prozesse vorhanden sind
Beim Laufen werden sie automatisch und ohne Vorwarnung getötet.
Im Gegensatz zu den meisten anderen Methoden ist Supervisor im FATAL Zustand, das
Methode wird weiterhin funktionieren.
Neustart()
Starten Sie den Supervisor-Prozess neu
@return boolean result gibt immer True zurück, es sei denn, es liegt ein Fehler vor
Diese Methode startet den Supervisor-Daemon sanft neu. Wenn irgendwelche Prozesse vorhanden sind
Beim Laufen werden sie automatisch und ohne Vorwarnung getötet. Notiere dass der
Der eigentliche UNIX-Prozess für Supervisor kann nicht neu gestartet werden. nur der Vorgesetzte
Programmschleife. Dies hat zur Folge, dass die internen Zustände von zurückgesetzt werden
Supervisor.
Im Gegensatz zu den meisten anderen Methoden ist Supervisor im FATAL Zustand, das
Methode wird weiterhin funktionieren.
Prozess Control
Klasse supervisor.rpcinterface.SupervisorNamespaceRPCInterface(supervisord)
getProcessInfo(name)
Informationen zu einem Prozess mit dem Namen „name“ abrufen
@param string name Der Name des Prozesses (oder „group:name“) @return
Strukturergebnis Eine Struktur, die Daten über den Prozess enthält
Der Rückgabewert ist eine Struktur:
{'name': 'Prozessname',
'Gruppe': 'Gruppenname',
'Beschreibung': 'PID 18806, Betriebszeit 0:03:12'
'Start': 1200361776,
'stopp': 0,
'jetzt': 1200361812,
'Zustand': 1,
'statename': 'RUNNING',
'spawnerr': '',
'exitstatus': 0,
'logfile': '/path/to/stdout-log', # veraltet, nur b/c
'stdout_logfile': '/path/to/stdout-log',
'stderr_logfile': '/path/to/stderr-log',
'pid': 1}
Name Name des Prozesses
Gruppe Name der Prozessgruppe
Beschreibung
Wenn der Prozessstatus „Läuft“ lautet, ist der Wert der Beschreibung „process_id“ und „process_id“.
Betriebszeit. Beispiel „pid 18806, Betriebszeit 0:03:12“. Wenn der Prozessstatus ist
Der Wert der gestoppten Beschreibung ist die Stoppzeit. Beispiel: „5. Juni 03:16 Uhr
".
Anfang UNIX-Zeitstempel, wann der Prozess gestartet wurde
halt UNIX-Zeitstempel des letzten Prozessendes oder 0, wenn der Prozess beendet wurde
wurde nie gestoppt.
jetzt an UNIX-Zeitstempel der aktuellen Zeit, der zur Berechnung verwendet werden kann
Prozessverfügbarkeit.
Zustand Statuscode, siehe process_states.
Staatsname
String-Beschreibung von Zustand, siehe Process_States.
Logdatei
Veralteter Alias für stdout_logfile. Dies ist nur vorgesehen
Kompatibilität mit Clients, die für Supervisor 2.x geschrieben wurden, und möglicherweise
zukünftig entfernt werden. Verwenden stdout_logfile stattdessen.
stdout_logfile
Absoluter Pfad und Dateiname zur STDOUT-Protokolldatei
stderr_logfile
Absoluter Pfad und Dateiname zur STDOUT-Protokolldatei
spawnerr
Beschreibung des Fehlers, der beim Spawnen aufgetreten ist, oder leere Zeichenfolge
wenn keine.
Ausgangsstatus
Beendigungsstatus (Fehlerstufe) des Prozesses oder 0, wenn der Prozess stillsteht
läuft.
pid UNIX-Prozess-ID (PID) des Prozesses oder 0, wenn dies nicht der Fall ist
läuft.
getAllProcessInfo()
Informieren Sie sich über alle Prozesse
@return array result Ein Array von Prozessstatusergebnissen
Jedes Element enthält eine Struktur, und diese Struktur enthält genau dasselbe
Elemente als die von zurückgegebene Struktur getProcessInfo. Wenn die Prozesstabelle
leer ist, wird ein leeres Array zurückgegeben.
startProcess(name, warten=Wahr)
Starten Sie einen Prozess
@param string name Prozessname (oder Gruppenname, oder auch Gruppe:*) @param
boolean wait Warten, bis der Prozess vollständig gestartet ist @return boolean result
Immer wahr, es sei denn, es liegt ein Fehler vor
startAllProcesses(wait=True)
Starten Sie alle in der Konfigurationsdatei aufgeführten Prozesse
@param boolean wait Warten, bis jeder Prozess vollständig gestartet ist @return
Array-Ergebnis Ein Array von Prozessstatus-Infostrukturen
startProcessGroup(name, warten=Wahr)
Starten Sie alle Prozesse in der Gruppe mit dem Namen „Name“.
@param string name Der Gruppenname @param boolean wait Warten auf
Jeder Prozess muss vollständig gestartet werden @return array result Ein Array von
Prozessstatus-Infostrukturen
stopProcess(name, warten=Wahr)
Stoppen Sie einen namentlich genannten Prozess
@param string name Der Name des zu stoppenden Prozesses (oder „group:name“)
@param boolean wait Warten, bis der Prozess vollständig gestoppt ist
@return boolean result Gibt immer True zurück, es sei denn, es liegt ein Fehler vor
stopProcessGroup(name, warten=Wahr)
Stoppen Sie alle Prozesse in der Prozessgruppe mit dem Namen „Name“.
@param string name Der Gruppenname @param boolean wait Warten auf
Jeder Prozess muss vollständig gestoppt werden @return array result Ein Array von
Prozessstatus-Infostrukturen
stopAllProcesses(wait=True)
Stoppen Sie alle Prozesse in der Prozessliste
@param boolean wait Warten, bis jeder Prozess vollständig gestoppt ist @return
Array-Ergebnis Ein Array von Prozessstatus-Infostrukturen
sendProcessStdin(name, Zeichen)
Senden Sie eine Zeichenfolge an die stdin des Prozessnamens. Wenn nicht 7-Bit
Daten werden gesendet (Unicode), sie werden in UTF-8 codiert, bevor sie an gesendet werden
Prozess' stdin. Wenn chars keine Zeichenfolge oder kein Unicode ist, erhöhen Sie es
INCORRECT_PARAMETERS. Wenn der Prozess nicht ausgeführt wird, lösen Sie NOT_RUNNING aus.
Wenn die stdin des Prozesses keine Eingaben akzeptieren kann (z. B. wurde sie von geschlossen).
untergeordneter Prozess), NO_FILE auslösen.
@param string name Der Prozessname, an den gesendet werden soll (oder „group:name“)
@param string chars Die Zeichendaten, die an den Prozess gesendet werden sollen
@return boolean result Gibt immer True zurück, es sei denn, es liegt ein Fehler vor
sendRemoteCommEvent(Typ, Daten)
Senden Sie ein Ereignis, das von Ereignis-Listener-Unterprozessen empfangen wird
Abonnieren des RemoteCommunicationEvent.
@param string type String für den „type“-Schlüssel im Event-Header
@param string data Daten für den Ereignistext @return boolean
Geben Sie immer „True“ zurück, es sei denn, es liegt ein Fehler vor
reloadConfig()
Konfiguration neu laden
@return boolean result gibt immer True zurück, es sei denn, es liegt ein Fehler vor
addProcessGroup(name)
Aktualisieren Sie die Konfiguration für einen laufenden Prozess aus der Konfigurationsdatei.
@param string name Name der hinzuzufügenden Prozessgruppe @return boolean
Ergebnis wahr, wenn erfolgreich
RemoveProcessGroup(Name)
Entfernen Sie einen gestoppten Prozess aus der aktiven Konfiguration.
@param string name Name der zu entfernenden Prozessgruppe @return
boolesches Ergebnis Gibt an, ob die Entfernung erfolgreich war
Prozess Protokollierung
Klasse supervisor.rpcinterface.SupervisorNamespaceRPCInterface(supervisord)
readProcessStdoutLog(name, Offset, Länge)
Liest Längenbytes aus dem stdout-Protokoll des Namens, beginnend beim Offset
@param string name der Name des Prozesses (oder „group:name“)
@param int offset Offset, ab dem mit dem Lesen begonnen werden soll. @param int
Länge Anzahl der aus dem Protokoll zu lesenden Bytes. @return-String
Ergebnis Bytes des Protokolls
readProcessStderrLog(name, Offset, Länge)
Liest Längenbytes aus dem stderr-Protokoll des Namens, beginnend beim Offset
@param string name der Name des Prozesses (oder „group:name“)
@param int offset Offset, ab dem mit dem Lesen begonnen werden soll. @param int
Länge Anzahl der aus dem Protokoll zu lesenden Bytes. @return-String
Ergebnis Bytes des Protokolls
tailProcessStdoutLog(name, Offset, Länge)
Bietet eine effizientere Möglichkeit, das (Standardausgabe-)Protokoll zu verfolgen als
readProcessStdoutLog(). Verwenden Sie readProcessStdoutLog(), um Chunks zu lesen und
tailProcessStdoutLog() an tail.
Fordert (Länge) Bytes aus dem Protokoll des (Namens) an, beginnend bei (Offset). Wenn
Die Gesamtprotokollgröße ist größer als (Offset + Länge), das Überlaufflag
gesetzt und der (Offset) wird automatisch erhöht, um den Puffer zu positionieren
am Ende des Protokolls. Wenn weniger als (Länge) Bytes verfügbar sind, wird die
Es wird die maximale Anzahl verfügbarer Bytes zurückgegeben. (Offset) zurückgegeben wird
immer der letzte Offset im Log +1.
@param string name der Name des Prozesses (oder „group:name“)
@param int offset Offset, um mit dem Lesen ab der Länge von @param int zu beginnen
maximale Anzahl von Bytes, die zurückgegeben werden sollen @return Array-Ergebnis [Zeichenfolge
Bytes, Int-Offset, Bool-Überlauf]
tailProcessStderrLog(name, Offset, Länge)
Bietet eine effizientere Möglichkeit zum Tailing des (stderr)-Protokolls als
readProcessStderrLog(). Verwenden Sie readProcessStderrLog(), um Chunks zu lesen und
tailProcessStderrLog() an tail.
Fordert (Länge) Bytes aus dem Protokoll des (Namens) an, beginnend bei (Offset). Wenn
Die Gesamtprotokollgröße ist größer als (Offset + Länge), das Überlaufflag
gesetzt und der (Offset) wird automatisch erhöht, um den Puffer zu positionieren
am Ende des Protokolls. Wenn weniger als (Länge) Bytes verfügbar sind, wird die
Es wird die maximale Anzahl verfügbarer Bytes zurückgegeben. (Offset) zurückgegeben wird
immer der letzte Offset im Log +1.
@param string name der Name des Prozesses (oder „group:name“)
@param int offset Offset, um mit dem Lesen ab der Länge von @param int zu beginnen
maximale Anzahl von Bytes, die zurückgegeben werden sollen @return Array-Ergebnis [Zeichenfolge
Bytes, Int-Offset, Bool-Überlauf]
clearProcessLogs(name)
Löschen Sie die stdout- und stderr-Protokolle für den genannten Prozess und öffnen Sie sie erneut.
@param string name Der Name des Prozesses (oder „group:name“) @return
boolesches Ergebnis Immer wahr, es sei denn, es liegt ein Fehler vor
clearAllProcessLogs()
Löschen Sie alle Prozessprotokolldateien
@return Array-Ergebnis Ein Array von Prozessstatus-Infostrukturen
System Methoden
Klasse supervisor.xmlrpc.SystemNamespaceRPCInterface(Namespaces)
listMethods()
Gibt ein Array zurück, das die verfügbaren Methodennamen auflistet
@return Array-Ergebnis Ein Array verfügbarer Methodennamen (Strings).
methodHelp(name)
Gibt eine Zeichenfolge zurück, die die Dokumentation der Methode zeigt
@param string name Der Name der Methode. @return string result Das
Dokumentation zum Methodennamen.
methodSignature(name)
Gibt ein Array zurück, das die Methodensignatur in der Form [rtype,
ptype, ptype...] wobei rtype der Rückgabedatentyp der Methode ist und
ptypes sind die Parameterdatentypen, die die Methode in der Methode akzeptiert
Argumentreihenfolge.
@param string name Der Name der Methode. @return Array-Ergebnis
Ergebnis.
Multicall(Anrufe)
Verarbeiten Sie ein Array von Aufrufen und geben Sie ein Array von Ergebnissen zurück. Anrufe sollten
Seien Sie Strukturen der Form {'methodName': string, 'params': array}. Jede
Das Ergebnis ist entweder ein Array mit einem einzelnen Element, das den Ergebniswert enthält, oder ein
Struktur der Form {'faultCode': int, 'faultString': string}. Das ist
Nützlich, wenn Sie viele kleine Anrufe ohne große Runden tätigen müssen
Reisen.
@param-Array-Aufrufe Ein Array von Anrufanforderungen. @return-Array-Ergebnis
Reihe von Ergebnissen
PLUGINS
INDIZES UND TISCHE
· Genindex
· Modindex
· Suche
Nutzen Sie Supervisor online über die Dienste von onworks.net