web-dev-qa-db-ja.com

Upstartスクリプトをデバッグするにはどうすればよいですか?

何らかの理由で apportアップグレード中のエラー が表示されますが、その原因は

% Sudo service apport start
start: Job failed to start

Sysvinitの下で、たとえば

Sudo sh -x /etc/init.d/whatever start

しかし、それはUpstartにマップされていないようです。次に何を試すべきですか?

回避策があります の場合、インストールを続行できます。しかし、スクリプトをどのようにトレースするかという一般的な質問にはまだ興味があります。

67
poolie

以下のすべての情報(および非常に役立つUpstartヘルプ)は The Upstart Cookbook からのものです。セクション18では、デバッグについて説明します。 http://upstart.ubuntu.com/cookbook/#debugging

Upstartジョブの「スクリプト」スタンザをトレースするこの特定のケースでは、Wordの「スクリプト」のすぐ下に次の行を追加する必要があります。

exec 2>>/dev/.initramfs/myjob.log
set -x

奇妙な場所の理由は、ルートファイルシステムがロードされる前の非常に早いブートで/dev/.initramfs/が利用可能であり、ブート後も引き続き利用可能であるためです。私はapportで推測していますが、おそらくそのパスを使用する必要はありません必要はありません。それでも、オプションを知ってうれしいです。

また、すべてのスクリプトはset -eで実行されるため、失敗したコマンドはすべてスクリプトを終了することに注意してください。 rootとしてスクリプトを実行するときは非常に注意する必要があるため、これは理にかなっています。

Upstartジョブで作業する人は、一般に上記のリンクされているUpstart Cookbookを参照することを強くお勧めします。

29
Mark Russell

Upstartは、/var/log/upstart/your-service-name.logと同じ名前でサービスの実行をログファイルに記録します。役立つはずです。

110