Ich verwende Ubuntu Server 11.04. Ich habe wie beschrieben einen Upstart-Benutzerjob erstelltHier.
Ich habe die folgende Datei bei mir /home/myuser/.init/sensors.conf
:
start on started mysql
stop on stopping mysql
chdir /home/myuser/mydir/project
exec /home/myuser/mydir/env/bin/python /home/myuser/mydir/project/manage.py sensors
respawn
respawn limit 10 90
Da myuser
ich den Job problemlos starten, stoppen und neu laden kann, funktioniert er perfekt:
$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting
Das Problem besteht darin, dass der Job beim Booten nicht automatisch gestartet wird mysql
. Nach einem Neustart mysql
läuft er, aber mein sensors
Job nicht.
Seltsam ist, dass der Job zwar nicht beim Hochfahren beginnt, aber wenn ich ihn sudo
neu starte, mysql
wird er tatsächlich gestartet. Die folgenden Befehle werden wie myuser
bei einem Neustart ausgeführt:
$ status sensors
sensors stop/waiting
$ sudo restart mysql
mysql start/running, process 1209
$ status sensors
sensors start/running, process 1229
Die Dokumentation für Upstart-Benutzerjobs ist ziemlich begrenzt. Was ist die richtige Technik, um einen Benutzerjob automatisch beim Systemstart zu starten?
rc.local
Ich weiß, dass ich zum Starten einfach etwas einfügen oder sensors.conf
es verschieben kann, /etc/init
aber ich frage mich, ob es eine Möglichkeit gibt, dies nur mit Upstart zu tun.
Antwort1
Das Problem besteht darin, dass Benutzerjobs erst in Upstart geladen werden, wenn der Benutzer durch Ausführen eines der initctl
Befehle eine Upstart-Sitzung erstellt.
Ich habe es ausführlicher beschrieben unterhttp://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.htmlund außerdem einen Upstart-Job geschrieben, der das Problem umgeht.
Antwort2
Betrachtet man Quellen wie /etc/init/mysql.conf
undhttp://upstart.ubuntu.com/cookbook/#start-onmeiner Meinung nach sollten Sie Ihre start on
Zeile etwa so ändern:
start on (mysql and runlevel [2345])
Ich bin mir nicht sicher, ob ich zustimme, dass Upstart keine Dokumentation hat, aber ich habe manchmal wirklich Schwierigkeiten, die Dokumentation zu verstehen. Normalerweise probiere ich einfach aus, bis es funktioniert. Die obige Lösung ist vielleicht sogar übertrieben ... etwas so Einfaches wie das hier könnte ausreichen:
start on mysql