Eu originalmente fiz essa pergunta no StackOverflow. Então percebi que este é provavelmente um lugar melhor.
Eu tenho a instalação do bluepill para monitorar meus processos delayed_job. (Aplicação Ruby On Rails)
Usando o Ubuntu 12.10.
Estou iniciando e monitorando o próprio serviço bluepill usando o Ubuntu upstart
. Minha configuração inicial está abaixo ( /etc/init/bluepill.conf
).
description "Start up the bluepill service"
start on runlevel [2]
stop on runlevel [016]
expect daemon
exec sudo /home/deploy/.rvm/wrappers/<app_name>/bluepill load /home/deploy/websites/<app_name>/current/config/server/staging/delayed_job.bluepill
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
Eu também tentei com em expect fork
vez de expect daemon
. Eu também tentei remover a expect...
linha completamente.
Quando a máquina inicializa, o bluepill inicia bem.
$ ps aux | grep blue
root 1154 0.6 0.8 206416 17372 ? Sl 21:19 0:00 bluepilld: <app_name>
O PID do processo de bluepill é 1154 aqui. Mas upstart
parece estar rastreando o PID errado. Ele está rastreando um PID que não existe.
$ initctl status bluepill
bluepill start/running, process 990
Eu acho que está rastreando o PID do sudo
processo que iniciou o processo do bluepill.
Isso está impedindo que o processo do bluepill seja reaparecido se eu forçar a matança usando o bluepill kill -9
.
Além disso, acho que, devido ao rastreamento incorreto do PID, a reinicialização / desligamento simplesmente trava e eu tenho que reiniciar a máquina todas as vezes.
Qual poderia ser o problema aqui?
ATUALIZAÇÃO :
O problema permanece até hoje (3 de maio de 2015) no Ubuntu 14.04.2.
O problema não é por causa do uso do sudo. Não estou mais usando o sudo. Minha configuração inicial atualizada é a seguinte:
description "Start up the bluepill service"
start on runlevel [2]
stop on runlevel [016]
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
expect daemon
script
shared_path=/home/deploy/websites/some_app/shared
bluepill load $shared_path/config/delayed_job.bluepill
end script
Quando a máquina é inicializada, o programa carrega bem. Mas o iniciante ainda rastreia o PID errado, conforme descrito acima.
A solução alternativa mencionada nos comentários pode corrigir o problema de interrupção. Eu ainda não tentei.
ps aux | grep 990
deve fazê-lo, maspstree 990
pode ser mais informativo.