Como depurar um serviço que “trava” o Upstart (supervisor, neste caso)

Como depurar um serviço que “trava” o Upstart (supervisor, neste caso)

Estou executando o Ubuntu 14.04. Tenho vários serviços configurados para rodar na inicialização, um deles é o supervisor. Eu inicializo no nível de execução 2, então todos os serviços /etc/rc2.d/devem ser iniciados na inicialização.

/etc/rc2.d/S20supervisorexecuta o script de inicialização do supervisor em /etc/init.d/supervisor, como deveria. Eu vejo o script sendo executado em /var/log/boot.log. Todo script que deveria ser executado depois disso não funciona. É como se o script do supervisor "travasse" no Upstart.

Se eu editar S20supervisorpara S10supervisor, isso faz com que o supervisor seja executado primeiro e nada mais seja executado. Depois disso, o supervisor está funcionando normalmente.

Se eu editar S20supervisorpara s99supervisor, isso faz com que o supervisor seja executado por último e todo o resto seja executado. Depois disso, o supervisor está funcionando normalmente.

Parece que o serviço inicia sem problemas, mas por algum motivo o Upstart trava e não executa nenhum script após o script do supervisor. Por que?

Como observação, consigo iniciar o supervisor manualmente sem problemas sudo service supervisor start, embora com a seguinte saída:

$ sudo service supervisor start Starting supervisor: 2017-05-20 00:14:04,435 CRIT Supervisor running as root (no user in config file) 2017-05-20 00:14:04,435 WARN Included extra file "/etc/supervisor/conf.d/graphite.conf" during parsing 2017-05-20 00:14:04,450 INFO RPC interface 'supervisor' initialized 2017-05-20 00:14:04,450 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2017-05-20 00:14:04,450 INFO supervisord started with pid 4462 2017-05-20 00:14:05,455 INFO spawned: 'statsd' with pid 4465 2017-05-20 00:14:05,458 INFO spawned: 'carbon-cache' with pid 4466 2017-05-20 00:14:05,464 INFO spawned: 'graphite-webapp' with pid 4467 2017-05-20 00:14:06,635 INFO success: statsd entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-05-20 00:14:06,635 INFO success: carbon-cache entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-05-20 00:14:06,635 INFO success: graphite-webapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Responder1

O Supervisor está sendo executado em primeiro plano em vez de em segundo plano, portanto o script Upstart não trava: ele está travado porque o supervisor está mantendo o controle do thread.

A solução será fazer com que o supervisor vá para segundo plano após a inicialização, mas postarei mais detalhes assim que realmente executar a correção.

informação relacionada