![Launchctl:如何配置服务以停止自动重启直到下次重启?](https://linux22.com/image/1235412/Launchctl%EF%BC%9A%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%E6%9C%8D%E5%8A%A1%E4%BB%A5%E5%81%9C%E6%AD%A2%E8%87%AA%E5%8A%A8%E9%87%8D%E5%90%AF%E7%9B%B4%E5%88%B0%E4%B8%8B%E6%AC%A1%E9%87%8D%E5%90%AF%EF%BC%9F.png)
我在 launchctl 中设置了几个服务,它们都会在启动时启动,并且无论因何种原因停止时都会自动重新启动。到目前为止,一切都很好。
但有时我希望其中一个服务退出并且暂时不重新启动。
除了从 launchctl 中删除服务(这也会立即停止服务,但我不想这样做)之外,还有其他推荐的方法吗?
答案1
我找到了一种方法来做到这一点。我在 plist 文件中添加了以下内容。
代替
<key>KeepAlive</key>
<true/>
我做到了
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
仅将 KeepAlive 设置为 false 就会干扰作业的启动。(它大概在等待被某人调用。)但 KeepAlive 的状态也可以在运行时确定。此服务现在在无故退出时(即被终止时)会自动重新启动,但在因某种原因退出时(即定期关闭)不会重新启动。这就是我需要的。
答案2
所以你想终止进程而不重新启动它,但又不想立即终止它?这对你来说真的有意义吗?
不,launchd 没有这样的功能。