Inicio

Generador Supervisor

Generador de Configuraciones Linux Supervisord (supervisord.conf)

POSIX sin procesos zombi

Genere bloques de configuración de programas para Supervisord con reinicio automático, escalado multiproceso, redirección de logs, variables de entorno y privilegios reducidos.

Preajustes:
Comando y Ejecución
Escalado y Concurrencia
Instances: 4
Ciclo de Vida y Reinicio Automático
Señales POSIX y Árbol de Procesos
Logs y Redirección de Flujo
Variables de Entorno
KEY="value"

Los saltos de línea se formatean automáticamente como sintaxis de coma de Supervisord.

; ==============================================================================
; 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"
Concurrencia de clúster
4 Processes

Load-balanced parallel execution pool

Protección contra zombis
100% Contained

stopasgroup & killasgroup both active

Límite de rotación de registros
50MB × 5

Consumo de disco limitado con rotación automática

Síntesis INI 100% en el Navegador

Sin envíos a servidores ni rastreo. Sus comandos, rutas y variables confidenciales se procesan en la memoria de su navegador.

Gestión de Procesos y Prevención de Zombies

Configurado con stopasgroup y killasgroup para garantizar que los procesos hijos (Celery, Gunicorn, Node) finalicen sin quedar huérfanos.

Compatibilidad Multiplataforma y Docker

Diseñado para entornos Ubuntu/Debian, CentOS/RHEL, archivos unitarios de systemd y contenedores Docker multiproceso.

Referencia técnica y guía de arquitectura

Guía para Desarrolladores del Generador de Supervisord Linux (supervisord.conf) — Guía de referencia

Genere bloques de configuración de programas para Supervisord con reinicio automático, escalado multiproceso, redirección de logs, variables de entorno y privilegios reducidos.

Parámetros clave y controles

commandDirectiva

Línea de comandos completa para ejecutar el servicio. Debe ejecutarse en primer plano sin bifurcarse a segundo plano.

Por defecto: Requerido
directoryDirectiva

Ruta absoluta del directorio de trabajo al que se cambiará antes de ejecutar el comando.

Por defecto: /var/www/app
autostartDirectiva

Indica si este programa debe iniciarse de forma automática al arrancar el demonio supervisord.

Por defecto: true
autorestartDirectiva

Política de reinicio automático ('true' siempre, 'false' nunca, 'unexpected' solo ante salidas anormales).

Por defecto: true
userDirectiva

Cuenta de usuario UNIX sin privilegios para revocar privilegios de root antes de ejecutar el proceso.

Por defecto: www-data
numprocsDirectiva

Cantidad de procesos simultáneos. Requiere plantilla %(process_num)s en process_name si es mayor a 1.

Por defecto: 1
stopasgroupDirectiva

Envía señales de parada (SIGTERM) a todo el grupo de procesos para terminar procesos hijos de forma limpia.

Por defecto: true
stdout_logfileDirectiva

Ruta del archivo de log para la salida estándar stdout, con soporte de rotación automática.

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

Consejos profesionales y mejores prácticas

Supervisord monitorea los procesos

Supervisord monitorea los procesos mediante su PID. Mantenga el proceso en primer plano (por ejemplo, 'daemon off;' en Nginx y omita la opción --daemon en Gunicorn).

En entornos como Node.js

En entornos como Node.js, Celery o Gunicorn que generan procesos hijos, establezca 'stopasgroup=true' y 'killasgroup=true' para erradicar procesos huérfanos o zombies al detener el servicio.

Evite utilizar 'supervisorctl reload'

Evite utilizar 'supervisorctl reload' en entornos de producción. Utilice 'supervisorctl reread' para detectar cambios y 'supervisorctl update' para reiniciar únicamente los programas modificados.

Al utilizar 'numprocs=4'

Al utilizar 'numprocs=4', defina 'process_name=%(program_name)s_%(process_num)02d'. Esto asegura identificadores únicos y flujos de logs independientes para cada worker.

Errores comunes y solución de problemas

El proceso entra en estado FATAL con el error 'Exited too quickly'

Ocurre cuando el comando se ejecuta en segundo plano o falla inmediatamente. Asegúrese de que el proceso corra en primer plano, revise los logs de stderr y asigne 'startsecs=5' para otorgar tiempo de estabilización.

SPAWNERR: No se pueden revocar privilegios al usuario especificado

Compruebe que el usuario indicado en 'user=' exista en /etc/passwd y posea permisos de lectura/ejecución sobre el binario y de escritura sobre el 'directory' y la carpeta de logs.

Los procesos hijos continúan ejecutándose tras detener el programa

Active 'stopasgroup=true' y 'killasgroup=true' en el bloque [program:name]. Sin estas directivas, la señal de parada se envía únicamente al proceso envoltura principal.

Preguntas frecuentes (FAQ)

¿Dónde se deben guardar los archivos de configuración individuales de programas?▼

En distribuciones Debian y Ubuntu, se ubican en /etc/supervisor/conf.d/*.conf. En CentOS, RHEL y Rocky Linux, habitualmente se colocan en /etc/supervisord.d/*.ini o *.conf, importados mediante la directiva [include] en supervisord.conf.

¿Cómo aplicar cambios de configuración sin reiniciar todos los servicios en ejecución?▼

Ejecute 'supervisorctl reread' para escanear las modificaciones en los archivos de configuración y luego 'supervisorctl update'. Esto reiniciará o iniciará exclusivamente los programas con cambios, manteniendo intactos los demás procesos.

¿Cómo ejecutar entornos virtuales de Python (venv) o Node.js con nvm?▼

Supervisord no carga perfiles interactivos del shell (.bashrc). En la directiva 'command', especifique siempre la ruta absoluta directa al binario, como: /home/usuario/venv/bin/gunicorn app:app o /home/usuario/.nvm/versions/node/v20.0.0/bin/node server.js.

¿Cuál es la diferencia entre autorestart=true y autorestart=unexpected?▼

'autorestart=true' reinicia el proceso incondicionalmente cada vez que finaliza, incluso con código de salida 0. 'autorestart=unexpected' solo lo reinicia si termina con un código de error no especificado en 'exitcodes' (por defecto 0 y 2).

¿Cómo se definen variables de entorno en una configuración de Supervisord?▼

Utilice la directiva 'environment=' separando cada variable por comas, por ejemplo: environment=PORT="8080",APP_ENV="production". Todo valor que contenga comas o espacios debe delimitarse entre comillas dobles.

Herramientas y utilidades relacionadas

Todas las herramientas →