Wie erhalte ich die Ausgabe von Upstart-Jobs, wenn ich über SSH angemeldet bin?

10

Um zu überwachen, was meine Jobdefinitionen tun, möchte ich die Textausgabe der Jobs sehen. Das scheint nicht möglich zu sein, wenn ich über SSH angemeldet bin.

Ich habe dieses Problem mit Natty 11.04, aber ich bin überzeugt, dass es häufiger auftritt.

Eine einfache Jobdatei, die ich benutze (Dateiname /etc/init/test.conf):

description "test"
start on test
console owner
kill timeout 5
task
script
  /bin/echo Gotcha...
end script

Mein Ziel ist es, den Text "Gotcha ..." zu sehen, wenn initctl emit testoder initctl start test. Aber das geht nicht.

Was ich bisher versucht habe:

  • "Konsolenausgabe" statt "Konsolenbesitzer"
  • "exec / bin / echo Gotcha ..." anstelle von script ... end script
Binarus
quelle

Antworten:

8

Da init (pid 1) den Dienst (der kein stdout / stderr hat) und nicht Ihre Shell /etc/init.dausführt (wie bei älteren Skripten), gibt es derzeit keine Möglichkeit, die generierte Ausgabe zu sehen. (Diese Funktion wird häufig angefordert und steht auf der Liste der für Upstart zu erledigenden Aufgaben.)

Um dies zu umgehen, empfehle ich, die Ausgabeumleitung zu Beginn des Jobs selbst zu erzwingen:

script
    exec >/var/log/test.debug 2>&1
    echo Gotcha...
end script
Kees Cook
quelle
16

Ab 12.04 (möglicherweise vorher) wird upstart standardmäßig in einer Datei unter / var / log / upstart / mit jeder Ausgabe des Jobs protokolliert

Aktuelle Dokumentation von Upstart (im Kochbuch)

Sie können diese Datei dann verfolgen, um den gesamten neuen Text anzuzeigen, der in die Datei geschrieben wird

Beispielsweise:

tail -f /var/log/upstart/test.log & # tail the output
initctl emit test
Dave Butler
quelle