回答:
私は解決策を見つけました
sudo launchctl log level debug
そしてこの後
tail -f /var/log/system.log
launchd plistファイルに次の行を含めると、launchd自体ではなくプロセスをログに記録しようとしていると仮定します。
<key>StandardOutPath</key>
<string>/path/to/logfile.log</string>
<key>StandardErrorPath</key>
<string>/path/to/another_logfile.log</string>
プロセスをリロードすると、スクリプトの内部にあるロギングまたは印刷は、実行されるたびにこれら2つのファイルのいずれかにキャプチャされます。ただし、ファイルを回転させるのはあなた次第です。ご想像のとおり、両方のインスタンスで同じファイルを使用すると、エラーとstdoutの両方が同じ場所に記録されます。
OS X 10.11(El Capitan)では、sudo launchctl debug <service-target> --stdout --stderr
@ peterによって提案されたファイルシステムオプションを使用したくない場合に使用して、1回限りのログを有効にできます。
現在のの実装では多くのものが異なりますがlaunchctl
、これ<service-target>
はちょっと変です。たとえば~/Library/LaunchAgents/dev.localmon.plist
、「label」を持つで構成するローカルサービスがあるとしますdev.localmon
。これ<service-target>
はでgui/$UID/dev.localmon
、ここに$UID
ユーザーIDがあります。CLIでこれを実行しているので、シェルが自動的に補間します。
したがってdev.localmon
、起動時にサービスがクラッシュしたとすると、次のように呼び出してlaunchctl
、プロセスのstdoutとstderrをシェルにパイプすることができます(次回のみ)。
sudo launchctl debug gui/$UID/dev.localmon --stdout --stderr
それはオープンですぐに使えるTTYでハングするので、別のターミナルに移動して実行してください:
launchctl start dev.localmon
# start is a legacy command and doesn't use the fancy new service-target notation
次に、最初のターミナルに戻って、出力が表示されます。(奇妙なことに、サービスプロセスが終了しても閉じないため、Ctrl-Cを押す必要があります。)
ところで、以前にサービスを壊していたPATHまたは環境で設定ファイルを修正したらlaunchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plist
、ドキュメントの目的のuncache
サブコマンドには次の効果があるため、古い2ステップを使用する必要があります。
コマンドはまだ実装されていません。
Appleのポストジョブリリース戦略に対するイェイ:「高速で動き、物を壊す」
sudo launchctl debug
Could not find domain for
私のために終了します