Originalmente hice esta pregunta en StackOverflow. Entonces me di cuenta de que este es probablemente un lugar mejor.
Tengo una configuración de bluepill para monitorear mis procesos delayed_job. (Aplicación Ruby On Rails)
Usando Ubuntu 12.10.
Estoy comenzando y monitoreando el servicio bluepill en sí mismo usando Ubuntu upstart
. Mi configuración inicial está debajo ( /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
También he intentado con en expect fork
lugar de expect daemon
. También he intentado eliminar la expect...
línea por completo.
Cuando la máquina arranca, bluepill comienza bien.
$ ps aux | grep blue
root 1154 0.6 0.8 206416 17372 ? Sl 21:19 0:00 bluepilld: <app_name>
El PID del proceso bluepill es 1154 aquí. Pero upstart
parece estar rastreando el PID incorrecto. Está rastreando un PID que no existe.
$ initctl status bluepill
bluepill start/running, process 990
Creo que está rastreando el PID del sudo
proceso que inició el proceso bluepill.
Esto evita que el proceso de bluepill se reaparezca si mato a la fuerza usando bluepill kill -9
.
Además, creo que debido al seguimiento incorrecto del PID, el reinicio / apagado simplemente se bloquea y tengo que reiniciar la máquina cada vez.
¿Cuál podría ser el problema aquí?
ACTUALIZACIÓN :
El problema continúa hasta hoy (3 de mayo de 2015) en Ubuntu 14.04.2.
El problema no es por usar sudo. Ya no estoy usando sudo. Mi configuración inicial actualizada es esta:
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
Cuando la máquina arranca, el programa se carga bien. Pero el arranque aún sigue el PID incorrecto, como se describió anteriormente.
La solución mencionada en los comentarios puede solucionar el problema pendiente. Sin embargo, no lo he probado.
ps aux | grep 990
debería hacerlo peropstree 990
podría ser más informativo.