Unter 12.04 habe ich den folgenden Startjob in ~/.init/
:
# myjob
start on net-device-up
stop on [!12345]
script
echo ">> hello from user script" >> ~/tmp/upstart.log
end script
Nach dem Neustart meines Computers
service myjob start
# => myjob: unrecognised service
initctl
listet den Job auf, aber wenn er ohne sudo ausgeführt wird, wird ein Fehler ausgegeben:
initctl start myjob
# => initctl: Rejected send message, 1 matched rules; type="method_call", sender=":1.100" (uid=1000 pid=13349 comm="initctl start thunderbird ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
Ich würde erwarten, dass ich den Job mit service
oder initctl
ohne Verwendung starten kann sudo
. Was habe ich falsch verstanden?
Vielen Dank
Antworten:
Ein paar Punkte:
Benutzerjobs sind in Ubuntu standardmäßig nicht aktiviert. Sehen:
Sie müssen nach dem Erstellen eines Upstart-Jobs keinen Neustart durchführen. Diese werden von Upstart automatisch erkannt (mithilfe von inotify).
Der
service
Befehl ist nicht Teil von Upstart - er ist das SystemV-Tool zum Bearbeiten von SysV-Jobs. Upstart bietet jedoch SystemV-Kompatibilität, sodass Upstart-Systemjobs auch überservice
(zur Vereinfachung) bearbeitet werden können . Die Upstart äquivalente Befehle sindstart
,stop
undrestart
.Für Benutzeraufträge, müssen Sie verwenden
start
,stop
undrestart
(oder dieinitctl
Äquivalente).Beachten Sie schließlich, dass Benutzerjobs derzeit sehr einfach sind. Wir planen, sie für 12.10 erheblich zu verbessern, aber beachten Sie vorerst Folgendes:
/bin/sh -e
unabhängig davon, welche Shell Sie standardmäßig verwenden. Das-e
ist auch sehr wichtig (man sh
für Details).Upstart legt nur einen minimalen Satz von Variablen in der Benutzerjobumgebung fest. Daher sollten Sie wahrscheinlich folgende Variablen festlegen
HOME
:env HOME=/home/james
Sehen:
quelle
/etc/dbus-1/system.d/Upstart.conf
? Es ist verblüffend, wie vage und unvollständig die Dokumentation zu einem so kritischen Systemdienstprogramm ist.Upstart.conf
Datei, auf die verwiesen wird, finden Sie hier .