Как получить выход из выскочки заданий при входе через SSH?

10

Чтобы отслеживать, что делают мои определения работы, я хотел бы видеть текстовый вывод из работы. Это не представляется возможным, когда я вошел в систему через SSH.

У меня эта проблема с Natty 11.04, но я убежден, что это более распространенная проблема.

Простой файл задания, который я использую (имя файла /etc/init/test.conf):

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

Моя цель - видеть текст "Gotcha ..." при выполнении initctl emit testили initctl start test. Но это не работает.

Что я уже пробовал:

  • «вывод консоли» вместо «владелец консоли»
  • "exec / bin / echo Gotcha ..." вместо сценария ... конец сценария
Binarus
источник

Ответы:

8

Поскольку init (pid 1) запускает службу (у которой нет stdout / stderr), а не вашу оболочку (как со /etc/init.dсценариями более старого стиля), в настоящее время нет способа увидеть сгенерированный вывод. (Эта функция часто запрашивается и находится в списке вещей, которые нужно сделать для Upstart.)

Чтобы обойти это, я рекомендую принудительное перенаправление вывода в начале самого задания:

script
    exec >/var/log/test.debug 2>&1
    echo Gotcha...
end script
Кис Кук
источник
16

Начиная с 12.04 (возможно, раньше), по умолчанию upstart будет регистрировать файл в / var / log / upstart / с любым выводом из задания

Текущая документация Upstart (на Поваренной книге)

Затем вы можете подключить этот файл, чтобы увидеть весь новый текст, который записывается в файл

Например:

tail -f /var/log/upstart/test.log & # tail the output
initctl emit test
Дэйв Батлер
источник