Ich verwende Ubuntu Server 11.04. Ich habe einen Upstart-Benutzerjob wie hier beschrieben erstellt .
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 gut starten, stoppen und neu laden kann, funktioniert er einwandfrei:
$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting
Das Problem ist, dass der Job beim Start beim mysql
Start nicht automatisch gestartet wird . Nach einem Neustart mysql
läuft, aber mein sensors
Job ist nicht.
Was seltsam ist, ist, dass der Job zwar nicht beim Booten beginnt, aber sudo
beim Neustart mysql
tatsächlich meinen Job startet. Die folgenden Befehle werden myuser
ab 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 beim Start des Systems automatisch zu starten?
Ich weiß, dass ich einfach etwas hineinwerfen kann rc.local
, um es zu starten, oder ich könnte es verschieben sensors.conf
, /etc/init
aber ich bin gespannt, ob es eine Möglichkeit gibt, dies nur mit Upstart zu tun.
Wenn Sie sich Quellen wie
/etc/init/mysql.conf
und http://upstart.ubuntu.com/cookbook/#start-on ansehen , sollten Sie Ihrestart on
Zeile in etwa so ändern :Ich bin mir nicht sicher, ob ich damit einverstanden bin, dass dem Emporkömmling die Dokumentation fehlt, aber es fällt mir manchmal schwer, die Dokumente zu verstehen. Normalerweise mache ich nur Versuch und Irrtum, bis es funktioniert. Die obige Lösung kann tatsächlich übertrieben sein ... etwas so Einfaches wie dies kann ausreichen:
quelle
start on
Leitung, aber es ist nur die Tatsache, dass Upstart nur / etc / init beim Start lädt, aber keine Benutzer-Init-Dateien in ihrem$HOME/.init
/etc/init
. Sie haben Recht, dass dafür anscheinend keine Dokumentation vorhanden ist, und ich bin mir nicht sicher, wie ich sicherstellen soll, dass~/.init
Skripte gestartet werden.$HOME/.init
Jobs nicht standardmäßig aktiviert sind und/etc/dbus-1/system.d/Upstart.conf
möglicherweise einige Änderungen erforderlich sind. upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user