Mit ubuntu upstart stop-daemon
Ich bin mit upstart zu erstellen, der einen daemon für einen gestarteten nginx python fastcgi-script. Wenn ich den unten funktioniert es:
sudo start myserver
Was nicht funktioniert ist:
sudo stop myserver
stop: Unknown instance:
Unten ist meine conf-Datei mit dem Befehl für den Prozess stoppen. Ich gehe davon aus, dass der Befehl für die Tötung hte Prozess ist im pre-stop-Skript?
#!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-Fragen verschoben werden, superuser.com
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der beste Weg, dies zu behandeln wäre, zu sagen, spawn-fcgi laufen im Vordergrund, und nicht daemonize. Die man-Seite für spawn-fcgi sagt, dass die
-n
option, die dies tut. Dann schreiben Sie diese ganze upstart-job als diese:Beachten Sie, dass mit Upstart 1.4 Sie müssen noch nicht einmal die log-Richtung, Standard 'Konsole', die würde haben alle die Ausgabe in /var/log/upstart/$UPSTART_JOB.log.. also itw ould nur
Ist es erwähnenswert, dass dieser als root läuft, aber es lauscht auf dem port 9001. So würden Sie wahrscheinlich besser dran, läuft da niemand. Mit Upstart 1.5 (Ubuntu 12.04 und später wieder an) Nur Folgendes hinzufügen:
(Haben Sie vielleicht zu ändern, nobody/nogroup zu ubuntu/ubuntu da Ihre Dateien sind in /home/ubuntu)
Beachten Sie auch, dass
start on startup
wird nicht zuverlässig funktionieren, weil diestartup
Ereignis geschieht, bevor die Dateisysteme eingehängt sind und bevor das Netzwerk oben ist. Auchstart on shutdown
einfach nur nicht funktioniert, da es nicht zu einem echten Ereignis. Sehenman upstart-events
für weitere Veranstaltungen.start
Linie ein wenig zustart on (filesystem and net-device-up IFACE=lo) or runlevel [2345]
Ich glaube, dass Ihre pre-stop-anhalten, Ihren server, so dass, wenn Upstart versucht zu stoppen Sie Ihre server gibt es keinen Laufenden Prozess zu stoppen und es gibt Sie, die Fehler.
Wenn Sie daemonize Ihren Prozess, den Sie verwenden müssen, die erwarten, dass daemon oder erwarten Gabel-Linie, so dass upstart kennt verfolgen die neuen pid.
ex:
start on startup
halt auf Herunterfahren
respawn
erwarten daemon
Dokumentation finden Sie im upstart-cookbook:
http://upstart.ubuntu.com/cookbook/#expect-daemon
http://upstart.ubuntu.com/cookbook/#expect-fork