web-dev-qa-db-ja.com

Launchctl:次の再起動まで自動的に再起動を停止するようにサービスを構成するにはどうすればよいですか?

私はlaunchctlでいくつかのサービスを設定していて、それらはすべて起動時に開始し、何らかの理由で停止するたびに自動的に再起動します。これまでのところ素晴らしいです。

しかし、サービスの1つを終了して、しばらく再起動しないようにしたい場合があります。

Launchctlからサービスを削除する以外に推奨される方法はありますか(これもすぐに停止しますが、私はしたくありません)?

5
Andrew J. Brehm

私はそれをする方法を見つけました。以下をplistファイルに追加しました。

の代わりに

<key>KeepAlive</key>
<true/>

やった

<key>KeepAlive</key>
<dict>
    <key>SuccessfulExit</key>
    <false/>
</dict>

KeepAliveをfalseに設定するだけで、ジョブの開始がまったく妨げられます。 (おそらく誰かからの呼び出しを待っていました。)しかし、KeepAliveのステータスは実行時にも判別できます。このサービスは、正当な理由がない場合(つまり、強制終了された場合)に自動的に再起動するようになりましたが、何らかの理由で終了した場合(つまり、定期的にシャットダウンされた場合)には再起動しません。これが私に必要なものです。

5
Andrew J. Brehm