Startseite

Supervisor Generator

Linux Supervisord (supervisord.conf) Programm-Generator

Zero-Zombie-POSIX

Erstellen Sie produktionsreife Supervisord-Programmblöcke mit automatischem Neustart, Multiprozess-Skalierung, Protokollumleitung, Umgebungsvariablen und Benutzerrechten.

Voreinstellungen:
Programmbefehl & Ausführung
Prozess-Skalierung & Cluster
Instances: 4
Lebenszyklus & Neustart-Richtlinien
POSIX-Signale & Prozessgruppen
Protokollierung & Stream-Umleitung
Umgebungsvariablen
KEY="value"

Zeilenumbrüche werden automatisch in kommagetrennte Supervisord-Syntax formatiert.

; ==============================================================================
; Supervisord Program Configuration: laravel-worker
; Generated 100% Client-Side Private on ToolsAA
; Path: /etc/supervisor/conf.d/laravel-worker.conf (Ubuntu/Debian)
;   or: /etc/supervisord.d/laravel-worker.ini (CentOS/RHEL/Rocky)
; ==============================================================================

[program:laravel-worker]
command=php /var/www/laravel/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
process_name=%(program_name)s_%(process_num)02d
numprocs=4
directory=/var/www/laravel
user=www-data
umask=022
priority=999
autostart=true
autorestart=true
startsecs=1
startretries=3
stopsignal=QUIT
stopwaitsecs=3600
stopasgroup=true
killasgroup=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/laravel-worker.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5
environment=APP_ENV="production",CACHE_DRIVER="redis"
Cluster-Parallelität
4 Processes

Load-balanced parallel execution pool

Zombie-Schutz
100% Contained

stopasgroup & killasgroup both active

Log-Rotations-Limit
50MB × 5

Gedeckelter Speicherverbrauch mit automatischer Log-Rotation

100% Lokale In-Browser INI-Synthese

Keine Server-Uploads oder Datenübertragungen. Alle Konfigurationen und Umgebungsvariablen bleiben geschützt im Browserspeicher.

Saubere Prozessgruppen & Zombie-Prävention

Optimiert mit stopasgroup und killasgroup, um Kindprozess-Bäume (Celery, Node, Gunicorn) zuverlässig und ohne verwaiste Prozesse zu terminieren.

Breite OS- und Docker-Kompatibilität

Vollständig kompatibel mit Ubuntu/Debian /etc/supervisor/conf.d/, RHEL/Rocky /etc/supervisord.d/ sowie Multi-Service Docker-Containern.

Technische Referenz & Architektur-Leitfaden

Linux Supervisord (supervisord.conf) Programm-Generator — Referenz-Leitfaden

Erstellen Sie produktionsreife Supervisord-Programmblöcke mit automatischem Neustart, Multiprozess-Skalierung, Protokollumleitung, Umgebungsvariablen und Benutzerrechten.

Wichtige Parameter & Steuerelemente

commandDirektive

Vollständige Befehlszeile zur Ausführung. Muss im Vordergrund verbleiben (nicht daemonisieren oder forken).

Standard: Erforderlich
directoryDirektive

Absoluter Dateipfad zum Arbeitsverzeichnis, in das vor der Befehlsausführung gewechselt wird.

Standard: /var/www/app
autostartDirektive

Legt fest, ob das Programm beim Systemstart des supervisord-Daemons automatisch gestartet wird.

Standard: true
autorestartDirektive

Neustart-Richtlinie ('true' für immer, 'false' für nie, 'unexpected' nur bei Fehler-Exit-Codes).

Standard: true
userDirektive

Nicht-privilegiertes UNIX-Benutzerkonto, zu dem vor Prozessstart gewechselt wird.

Standard: www-data
numprocsDirektive

Anzahl paralleler Worker-Instanzen. Erfordert ein process_name mit dem Schema %(process_num)s.

Standard: 1
stopasgroupDirektive

Sendet Stoppsignale an die gesamte Prozessgruppe, um Kindprozesse sauber zu beenden.

Standard: true
stdout_logfileDirektive

Dateipfad für Standard-Output-Logs mit automatischer Protokollrotation.

Standard: /var/log/supervisor/%(program_name)s.out.log

Profi-Tipps & Best Practices

Supervisord überwacht Prozesse über

Supervisord überwacht Prozesse über deren PID. Anwendungen müssen zwingend im Vordergrund laufen (z. B. 'daemon off;' in Nginx oder kein --daemon bei Gunicorn).

Bei Frameworks wie Node.js

Bei Frameworks wie Node.js, Celery oder Gunicorn, die Kindprozesse forken, verhindern 'stopasgroup=true' und 'killasgroup=true' verwaiste Zombie-Prozesse beim Beenden.

Vermeiden Sie 'supervisorctl reload'

Vermeiden Sie 'supervisorctl reload' in der Produktion. Nutzen Sie stattdessen 'supervisorctl reread' und 'supervisorctl update', um gezielt nur modifizierte Konfigurationen neu zu laden.

Wenn Sie 'numprocs=4' setzen

Wenn Sie 'numprocs=4' setzen, konfigurieren Sie 'process_name=%(program_name)s_%(process_num)02d'. Dies weist jedem Worker eine eigene Identifikationsnummer und separate Logs zu.

Häufige Fallstricke & Fehlerbehebung

Prozess wechselt in den Zustand FATAL mit 'Exited too quickly'

Dies geschieht, wenn der Prozess in den Hintergrund forkt, sofort abstürzt oder vor Ablauf von 'startsecs' mit Code 0 beendet wird. Prüfen Sie die stderr-Logs und setzen Sie 'startsecs=5'.

SPAWNERR: Rechte können nicht an angegebenen Benutzer übertragen werden

Stellen Sie sicher, dass der in 'user=' angegebene Benutzer in /etc/passwd existiert und Lese-/Schreibrechte für das 'directory' sowie die Log-Verzeichnisse besitzt.

Kindprozesse laufen nach dem Stoppen des Programms weiter

Fügen Sie 'stopasgroup=true' und 'killasgroup=true' zur [program:name]-Konfiguration hinzu, damit Signale an die gesamte Prozessgruppe und nicht nur an den Elternprozess gesendet werden.

Häufig gestellte Fragen (FAQ)

Wo sollten Programm-Konfigurationsdateien unter Linux abgelegt werden?▼

Auf Debian/Ubuntu-Systemen befinden sich individuelle Konfigurationen in /etc/supervisor/conf.d/*.conf. Unter CentOS/RHEL/Rocky Linux liegen sie üblicherweise in /etc/supervisord.d/*.ini oder *.conf und werden über die [include]-Direktive der supervisord.conf eingebunden.

Wie übernehme ich Konfigurationsänderungen ohne Neustart aller Dienste?▼

Führen Sie 'supervisorctl reread' aus, um geänderte Dateien einzulesen, gefolgt von 'supervisorctl update'. Dadurch werden nur die tatsächlich geänderten Programme neu gestartet oder hinzugefügt, während alle anderen unterbrechungsfrei weiterlaufen.

Wie binde ich Python Virtual Environments oder Node Version Manager ein?▼

Supervisord lädt keine Benutzer-Shellprofile (.bashrc). Geben Sie im Parameter 'command' den absoluten Pfad zur Binärdatei im Virtualenv an (z. B. /home/user/venv/bin/gunicorn app:app oder /home/user/.nvm/versions/node/v20.0.0/bin/node server.js).

Was ist der Unterschied zwischen autorestart=true und autorestart=unexpected?▼

'autorestart=true' startet den Prozess bei jeder Beendigung neu, selbst bei regulärem Exit mit Status 0. 'autorestart=unexpected' startet den Prozess nur dann neu, wenn der Rückgabewert nicht in 'exitcodes' (Standard: 0 und 2) aufgeführt ist.

Wie werden Umgebungsvariablen in Supervisord definiert?▼

Über die Direktive 'environment=' mit kommagetrennten Schlüssel-Wert-Paaren, z. B.: environment=NODE_ENV="production",PORT="8080". Werte mit Leerzeichen oder Sonderzeichen müssen in Anführungszeichen gesetzt werden.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →