Ausführen von Upstart-Benutzerjobs beim Start

Ausführen von Upstart-Benutzerjobs beim Start

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 myuserich 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 mysqlläuft er, aber mein sensorsJob nicht.

Seltsam ist, dass der Job zwar nicht beim Hochfahren beginnt, aber wenn ich ihn sudoneu starte, mysqlwird er tatsächlich gestartet. Die folgenden Befehle werden wie myuserbei 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.localIch weiß, dass ich zum Starten einfach etwas einfügen oder sensors.confes verschieben kann, /etc/initaber 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 initctlBefehle 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.confundhttp://upstart.ubuntu.com/cookbook/#start-onmeiner Meinung nach sollten Sie Ihre start onZeile 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

verwandte Informationen