Launchctl:如何配置服务以停止自动重启直到下次重启?

Launchctl:如何配置服务以停止自动重启直到下次重启?

我在 launchctl 中设置了几个服务,它们都会在启动时启动,并且无论因何种原因停止时都会自动重新启动。到目前为止,一切都很好。

但有时我希望其中一个服务退出并且暂时不重新启动。

除了从 launchctl 中删除服务(这也会立即停止服务,但我不想这样做)之外,还有其他推荐的方法吗?

答案1

我找到了一种方法来做到这一点。我在 plist 文件中添加了以下内容。

代替

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

我做到了

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

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

答案2

所以你想终止进程而不重新启动它,但又不想立即终止它?这对你来说真的有意义吗?

不,launchd 没有这样的功能。

相关内容