Launchctl:如何配置服务以在下次重新启动之前停止自动重新启动?

And*_*ehm 5 launchctl macos

我在 launchctl 中设置了几个服务,它们都在启动时启动,并在出于任何原因停止时自动重新启动。到目前为止,这很棒。

但有时我希望其中一项服务退出而不是重新启动一段时间。

除了从launchctl中删除服务(这也会立即停止它,我不想这样做)之外,是否有推荐的方法来做到这一点?

And*_*ehm 6

我找到了一种方法。我将以下内容添加到 plist 文件中。

代替

<key>KeepAlive</key>
<true/>
Run Code Online (Sandbox Code Playgroud)

我做到了

<key>KeepAlive</key>
<dict>
    <key>SuccessfulExit</key>
    <false/>
</dict>
Run Code Online (Sandbox Code Playgroud)

只是将 KeepAlive 设置为 false 会干扰工作的开始。(大概是在等待被某人调用。)但 KeepAlive 的状态也可以在运行时确定。该服务现在会在无故退出时自动重启(即当它被杀死时),但不会在它出于某种原因退出时(即定期关闭)自动重启。这就是我需要的。