SSH経由でログインしたときにupstartジョブから出力を取得するにはどうすればよいですか?


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

私の目標は、initctl emit testまたはを実行するときに「Gotcha ...」というテキストを表示することですinitctl start test。しかし、それはうまくいきません。

これまでに試したこと:

  • 「コンソール所有者」の代わりに「コンソール出力」
  • スクリプトの代わりに「exec / bin / echo Gotcha ...」...スクリプトを終了

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.