J'ai initialement posé cette question sur StackOverflow. Alors rendu compte que ce qui est probablement un meilleur endroit.
J'ai bluepill configuré pour surveiller mes processus de delayed_job. (Application Ruby On Rails)
En utilisant Ubuntu 12.10.
Je commence et le suivi du service bluepill lui - même à l' aide de Ubuntu upstart
. Ma config est arriviste ci - dessous ( /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
J'ai aussi essayé avec au expect fork
lieu de expect daemon
. J'ai aussi essayé d' enlever la expect...
complètement ligne.
Lorsque la machine démarre, bluepill se met en marche bien.
$ ps aux | grep blue
root 1154 0.6 0.8 206416 17372 ? Sl 21:19 0:00 bluepilld: <app_name>
Le PID du processus Bluepill est 1154 ici. Mais upstart
semble être suivi du PID erroné. Il est suivi d' un PID qui n'existe pas.
$ initctl status bluepill
bluepill start/running, process 990
Je pense que c'est le suivi du PID du sudo
processus qui a lancé le processus Bluepill.
Cela empêche le processus Bluepill de réapparaître si je tue avec force Bluepill en utilisant kill -9
.
De plus, je pense qu'en raison du mauvais PID suivi, le redémarrage / arrêt se bloque et je dois réinitialiser la machine à chaque fois.
Quel pourrait être le problème ici?
MISE À JOUR :
Le problème persiste à partir d'aujourd'hui (3 mai 2015) sur Ubuntu 14.04.2.
Le problème n'est pas dû à l'utilisation de sudo. Je n'utilise plus sudo. Ma configuration par défaut mise à jour est la suivante:
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
Lorsque la machine démarre, le programme se charge correctement. Mais upstart suit toujours le mauvais PID, comme décrit ci-dessus.
La solution de contournement mentionnée dans les commentaires peut résoudre le problème de suspension. Mais je ne l'ai pas essayé.
ps aux | grep 990
devrait le faire maispstree 990
pourrait être plus informatif.