Como alguém que se apaixonou por daemontools há treze anos, eu também tento supervisionar todas as coisas. O nginx é um pouco agressivo, você tem que usar pelo menos daemon off;
na sua configuração para executá-lo em primeiro plano, e master_process off;
se você realmente não quer que ele crie filhos. Apenas exec
do seu programa de execução e ele se comportará como você espera.
Eu estava cortando na contramão, no entanto. Eu cheguei a aceitar que o nginx tem supervisão embutida. Você notará que quando você o executa, você obtém algo assim:
$ psg nginx
root 1361 1 0 Mar31 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 1362 1361 0 Mar31 ? 00:18:10 nginx: worker process
www-data 1363 1361 0 Mar31 ? 00:18:44 nginx: worker process
$ pstree -p 1361
nginx(1361)─┬─nginx(1362)
└─nginx(1363)
O processo mestre é essencialmente supervise
. É super leve e é o único responsável por garantir que os funcionários estejam funcionando corretamente. Eu nunca uma vez tive uma falha em mim, mesmo em alguns ambientes bastante ocupados. Então, agora eu só deixo init
parar / iniciá-lo e me preocupo com os serviços que eu preciso supervisionar.
Existem outras considerações. Confira o que a documentação oficial tem a dizer sobre isso: link