Início

Gerador Supervisor

Gerador de Configurações Supervisord Linux (supervisord.conf)

POSIX Anti-Zumbi

Gere blocos de configuração de programas para o Supervisord com reinicialização automática, múltiplos processos, logs redirecionados, variáveis de ambiente e privilégios de usuário.

Predefinições:
Comando e Execução
Escala e Concorrência
Instances: 4
Ciclo de Vida e Auto-Restart
Sinais POSIX e Árvore de Processos
Logs e Redirecionamento de Streams
Variáveis de Ambiente
KEY="value"

Quebras de linha são formatadas automaticamente para a sintaxe com vírgula do 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"
Concorrência de Cluster
4 Processes

Load-balanced parallel execution pool

Proteção Anti-Zumbi
100% Contained

stopasgroup & killasgroup both active

Limite de Rotação de Logs
50MB × 5

Consumo de disco limitado com rotação automática de logs

Síntese INI 100% no Navegador

Sem envios para servidores ou telemetria. Comandos, diretórios e variáveis de ambiente confidenciais permanecem seguros na memória local.

Prevenção de Processos Zumbis e Grupos POSIX

Configuração padrão com stopasgroup e killasgroup para assegurar que subprocessos filhos (Celery, Gunicorn, Node) encerrem sem deixar órfãos.

Compatibilidade com Linux e Docker

Totalmente alinhado aos padrões do Ubuntu/Debian /etc/supervisor/conf.d/, RHEL /etc/supervisord.d/ e contêineres Docker.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de Configuração do Supervisord Linux (supervisord.conf) — Guia de referência

Gere blocos de configuração de programas para o Supervisord com reinicialização automática, múltiplos processos, logs redirecionados, variáveis de ambiente e privilégios de usuário.

Parâmetros principais e controles

commandDiretiva

Comando completo para iniciar o serviço. Deve ser executado em primeiro plano (sem demonizar ou criar forks).

Padrão: Obrigatório
directoryDiretiva

Caminho absoluto do diretório de trabalho antes da execução do comando.

Padrão: /var/www/app
autostartDiretiva

Define se o programa deve ser iniciado automaticamente quando o daemon do supervisord subir.

Padrão: true
autorestartDiretiva

Política de reinício automático ('true' sempre, 'false' nunca, 'unexpected' somente em falhas com código de erro).

Padrão: true
userDiretiva

Conta de usuário UNIX não privilegiada sob a qual o processo executará para abandonar privilégios de root.

Padrão: www-data
numprocsDiretiva

Número de instâncias simultâneas do processo. Exige %(process_num)s em process_name caso seja maior que 1.

Padrão: 1
stopasgroupDiretiva

Envia sinais de parada para todo o grupo de processos, garantindo encerramento limpo de subprocessos.

Padrão: true
stdout_logfileDiretiva

Destino dos registros de saída padrão (stdout), com suporte à rotação automática de arquivos.

Padrão: /var/log/supervisor/%(program_name)s.out.log

Dicas profissionais e melhores práticas

O Supervisord rastreia o ciclo de vida

O Supervisord rastreia o ciclo de vida dos processos via PID. Os programas devem permanecer em primeiro plano (ex: 'daemon off;' no Nginx ou sem flags --daemon no Gunicorn).

Combine stopasgroup com killasgroup

Para servidores que criam processos filhos como Node.js, Celery ou Gunicorn, configure 'stopasgroup=true' e 'killasgroup=true' para eliminar processos órfãos ou zumbis ao finalizar.

Evite rodar 'supervisorctl reload' em

Evite rodar 'supervisorctl reload' em produção. Use 'supervisorctl reread' para ler as alterações e 'supervisorctl update' para reiniciar somente os serviços afetados sem parar o restante.

Ao definir 'numprocs=4'

Ao definir 'numprocs=4', configure 'process_name=%(program_name)s_%(process_num)02d'. Isso atribui nomes únicos e arquivos de log dedicados para cada worker.

Problemas comuns e solução de problemas

Processo entra em estado FATAL com erro 'Exited too quickly'

Ocorre quando o processo entra em segundo plano ou falha imediatamente. Certifique-se de que roda em primeiro plano, verifique os logs de stderr e defina 'startsecs=5' para tolerar o tempo de inicialização.

SPAWNERR: Não foi possível transferir privilégios para o usuário

Verifique se o usuário definido em 'user=' existe em /etc/passwd e possui permissão de leitura/execução no binário e de escrita em 'directory' e nas pastas de logs.

Processos filhos continuam rodando após a parada do serviço

Adicione 'stopasgroup=true' e 'killasgroup=true' ao bloco [program:name]. Sem essas diretivas, apenas o processo pai recebe os sinais de parada.

Perguntas frequentes (FAQ)

Onde os arquivos de configuração de programas do Supervisord devem ser armazenados?▼

No Ubuntu/Debian, eles ficam em /etc/supervisor/conf.d/*.conf. No CentOS/RHEL/Rocky Linux, ficam tipicamente em /etc/supervisord.d/*.ini ou *.conf, importados através da diretiva [include] no supervisord.conf principal.

Como aplicar alterações de configuração sem reiniciar todos os serviços?▼

Execute 'supervisorctl reread' para identificar novos ou modificados arquivos de configuração e, em seguida, 'supervisorctl update'. Isso iniciará ou recarregará exclusivamente os programas alterados.

Como executar comandos dentro de virtualenv Python ou Node.js (nvm)?▼

O Supervisord não carrega perfis de shell interativos (.bashrc). Defina o caminho absoluto diretamente para o executável no parâmetro command, por exemplo: /home/usuario/venv/bin/gunicorn app:app ou /home/usuario/.nvm/versions/node/v20.0.0/bin/node index.js.

Qual é a diferença entre autorestart=true e autorestart=unexpected?▼

'autorestart=true' reinicia o processo incondicionalmente sempre que ele encerrar, mesmo com código 0. Já 'autorestart=unexpected' só reinicia se o processo terminar com um código não previsto na diretiva 'exitcodes' (padrão: 0 e 2).

Como definir variáveis de ambiente para um programa no Supervisord?▼

Utilize a diretiva 'environment=' com pares chave-valor separados por vírgula: environment=PORT="3000",NODE_ENV="production". Valores com espaços ou caracteres especiais devem ser delimitados por aspas duplas.

Ferramentas e utilitários relacionados

Todas as ferramentas →