Jak uzyskać dane wyjściowe z zadań upstart po zalogowaniu przez SSH?

10

Aby monitorować, co robią moje definicje zadań, chciałbym zobaczyć wyniki tekstowe z zadań. Nie wydaje się to możliwe, gdy jestem zalogowany przez SSH.

Mam ten problem z Natty 11.04, ale jestem przekonany, że jest to bardziej powszechny problem.

Prosty plik zadania, którego używam (nazwa pliku /etc/init/test.conf):

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

Moim celem jest, aby zobaczyć tekst „Gotcha ...” podczas wykonywania initctl emit testlub initctl start test. Ale to nie działa.

Co próbowałem do tej pory:

  • „wyjście konsoli” zamiast „właściciel konsoli”
  • „exec / bin / echo Gotcha ...” zamiast skryptu ... zakończ skrypt
Binarus
źródło

Odpowiedzi:

8

Ponieważ init (pid 1) uruchamia usługę (która nie ma stdout / stderr), a nie twoją powłokę (jak w przypadku starszych /etc/init.dskryptów), obecnie nie ma sposobu, aby zobaczyć wygenerowane wyjście. (Ta funkcja jest często wymagana i znajduje się na liście rzeczy do zrobienia dla Upstart.)

Aby obejść ten problem, zalecam wymuszanie przekierowania danych wyjściowych na początku samego zadania:

script
    exec >/var/log/test.debug 2>&1
    echo Gotcha...
end script
Kees Cook
źródło
16

Od 12.04 (prawdopodobnie wcześniej) domyślnie upstart zaloguje się do pliku pod / var / log / upstart / z dowolnym wyjściem z zadania

Aktualna dokumentacja Upstart (w książce kucharskiej)

Następnie możesz ogonić ten plik, aby zobaczyć cały nowy tekst, który jest zapisywany w pliku

Na przykład:

tail -f /var/log/upstart/test.log & # tail the output
initctl emit test
Dave Butler
źródło