En utilisant ubuntu parvenu à arrêter un démon
Je suis à l'aide de nouveau pour créer un démon pour une engendré nginx python fastcgi script. Si j'utilise le ci-dessous cela fonctionne:
sudo start myserver
Ce qui ne fonctionne pas est:
sudo stop myserver
stop: Unknown instance:
Ci-dessous mon fichier conf avec la commande pour arrêter le processus. Je suis en supposant que la commande pour le meurtre de hte proccess est en pré-stop script?
#!upstart
description "myserver"
author "Test"
start on startup
stop on shutdown
respawn
#instance
script
export HOME="/root"
echo $$ > /var/run/myerver.pid
exec spawn-fcgi -d /home/ubuntu/workspace/rtbopsConfig/myserver/-f /home/ubuntu/workspace/rtbopsConfig/myserver/index.py -a 127.0.0.1 -p 9001 >> /var/log/myserver.sys.log 2>&1
end script
pre-start script
# Date format same as (new Date()).toISOString() for consistency
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/myserver.sys.log
end script
pre-stop script
rm /var/run/myserver.pid
sudo kill `sudo lsof -t -i:9001`
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/myserver.sys.log
end script
*Nix questions se déplacé à superuser.com
OriginalL'auteur Tampa | 2012-02-19
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de gérer ce qui serait à dire spawn-fcgi au premier plan, et de ne pas daemonize. La page de man pour spawn-fcgi dit que le
-n
option n'est présente. Ensuite, vous pouvez réécrire l'ensemble de cette classe d'emplois:Noter qu'avec Upstart la version 1.4, vous n'avez même pas besoin de le journal de direction, comme la valeur par défaut est 'journal de la console", qui aurait la sortie dans /var/log/upstart/$UPSTART_JOB.journal.. donc itw ould juste être
Il est intéressant de noter que cela s'exécute en tant que root, mais il écoute sur le port 9001. Donc, vous feriez probablement mieux exécute en tant que personne. Avec Upstart 1.5 (Ubuntu 12.04 et plus tard) il suffit d'ajouter ce:
(Vous pourriez avoir à changer de personne/nogroup pour ubuntu/ubuntu depuis vos fichiers sont dans /home/ubuntu)
Également noter que
start on startup
ne fonctionnera pas de manière fiable, car lesstartup
événement se produit avant que les systèmes de fichiers sont montés et avant que le réseau est en place. Aussistart on shutdown
tout simplement ne fonctionne pas, qu'il n'est pas un événement réel. Voirman upstart-events
pour plus d'événements.start
ligne a peu destart on (filesystem and net-device-up IFACE=lo) or runlevel [2345]
Que faire si le processus ne peut pas être porté à l'avant-plan? J'ai 2 commandes, phpbrew fpm de début et de phpbrew fpm arrêter. Je veux juste de début du service et de l'arrêt de traduire ces 2 commandes, respectivement. Comment puis-je le faire?
OriginalL'auteur SpamapS
Je crois que votre pre-stop est l'arrêt de votre serveur, donc quand Arriviste tente d'arrêter votre serveur il n'y a pas de processus en cours d'exécution pour arrêter et il vous donne cette erreur.
OriginalL'auteur maqifrnswa
Si vous daemonize votre processus, vous devez utiliser l'attendre ou démon s'attendre à fourche ligne de sorte que upstart sait à suivre la nouvelle pid.
ex:
démarrer au démarrage
arrêt sur arrêt
respawn
attendre démon
Documentation peut être trouvée dans le nouveau livre de cuisine:
http://upstart.ubuntu.com/cookbook/#expect-daemon
http://upstart.ubuntu.com/cookbook/#expect-fork
OriginalL'auteur Michael Adriance