私はlaunchctlでいくつかのサービスを設定していて、それらはすべて起動時に開始し、何らかの理由で停止するたびに自動的に再起動します。これまでのところ素晴らしいです。
しかし、サービスの1つを終了して、しばらく再起動しないようにしたい場合があります。
Launchctlからサービスを削除する以外に推奨される方法はありますか(これもすぐに停止しますが、私はしたくありません)?
私はそれをする方法を見つけました。以下をplistファイルに追加しました。
の代わりに
<key>KeepAlive</key>
<true/>
やった
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
KeepAliveをfalseに設定するだけで、ジョブの開始がまったく妨げられます。 (おそらく誰かからの呼び出しを待っていました。)しかし、KeepAliveのステータスは実行時にも判別できます。このサービスは、正当な理由がない場合(つまり、強制終了された場合)に自動的に再起動するようになりましたが、何らかの理由で終了した場合(つまり、定期的にシャットダウンされた場合)には再起動しません。これが私に必要なものです。