Benutzer-Upstart-Job in ~ / .init / wurde nicht gefunden

7

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 serviceoder initctlohne Verwendung starten kann sudo. Was habe ich falsch verstanden?

Vielen Dank

Dave Nolan
quelle
2
Wie haben Sie Benutzerjobs aktiviert? Die Dokumentation in der Antwort, die Sie akzeptiert haben, ist bestenfalls unvollständig ...
namuol

Antworten:

12

Ein paar Punkte:

  1. Benutzerjobs sind in Ubuntu standardmäßig nicht aktiviert. Sehen:

  2. Sie müssen nach dem Erstellen eines Upstart-Jobs keinen Neustart durchführen. Diese werden von Upstart automatisch erkannt (mithilfe von inotify).

  3. Der serviceBefehl 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 über service(zur Vereinfachung) bearbeitet werden können . Die Upstart äquivalente Befehle sind start, stopund restart.

  4. Für Benutzeraufträge, müssen Sie verwenden start, stopund restart(oder die initctlÄ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:

  • Upstart führt alle Benutzerjobs aus, /bin/sh -eunabhängig davon, welche Shell Sie standardmäßig verwenden. Das -eist auch sehr wichtig ( man shfü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:

Jamesodhunt
quelle
Danke James, ich dachte, ich hätte gelesen, dass Benutzerjobs in Precise aktiviert wurden. Vielen Dank, dass Sie meine Verwirrung beseitigt haben.
Dave Nolan
Wie würde ich einen Benutzerjob unter Ubuntu 12.04 automatisch starten? Ich habe ein Tutorial gefunden , das für mich unter Ubuntu 11.10 funktioniert hat, aber nicht unter Ubuntu 12.04. Irgendwelche Ideen?
Bouke
5
Seltsamerweise scheint in der Dokumentation nicht erwähnt zu werden, wie Benutzerjobs aktiviert werden, sondern nur die Konfigurationsdatei, und der Administrator muss dies tun. Sind wir nicht alle Administratoren?
Ropez
2
@ppetraki Könnten Sie bitte eine Antwort posten, in der die Änderungen, an denen vorgenommen werden soll, klar umrissen sind /etc/dbus-1/system.d/Upstart.conf? Es ist verblüffend, wie vage und unvollständig die Dokumentation zu einem so kritischen Systemdienstprogramm ist.
Namuol
1
Die Upstart.confDatei, auf die verwiesen wird, finden Sie hier .
Denis Washington