如何使用非“旧式” launchctl命令加载和卸载plists?


14

我在中有一些plist文件~/Library/LaunchAgents

多年来,我一直在愉快地使用launchctl load -wlaunchctl unload -w打开和关闭这些功能。但是,我现在注意到了,loadunload已降级到手册页的“旧版”部分。让我们称其中之一com.example.service.plist

但是,当我尝试通过launchctl enable "gui/$(id -u)/com.example.service"和与这些插件交互时launchctl disable "gui/$(id -u)/com.example.service",其他启动的命令似乎报告成功-例如,launchctl print "gui/$(id -u)"完全显示了与我设置的状态相对应的禁用标志-服务实际上并没有启动或停止,或者监听和取消监听其端口。

我缺少一些步骤吗?目前我正与坚持loadunload,但我想了解这个东西互动的非过时的方式苹果最终猛地对旧/坏的方式门前...


传统意味着即将进行更改-您仍然可以在10.11及更低版本上使用加载和卸载内容。我的推论是苹果今年将在WWDC上提供文档,并提供迁移时间表...
bmike

1
我猜可能还没有答案,但是它肯定看起来enable并且disable打算取代loadand unload。我只是无法让他们按预期工作。
Glyph'2

1
您是否尝试过以下launchctl enablelaunchctl kickstart

我没有,但不launchctl kickstart应该只是为该工作发出激活通知吗?我之所以使用Launchd,是因为我纯粹希望按需激活。
雕文

Answers:


6

我问 Twitter用户@launchderp

@launchderp launchctl load至少在10.12之前或之后会安全使用卸载吗?

cf 如何使用非“旧式” launchctl命令加载和卸载plists?

@launchderp回答

@tjluoma是的,他们仍然很安全。多年的依赖关系无法打破它们。

尽管这似乎不是苹果公司的正式声明,但我相信这个人会成为launchd为苹果公司积极工作的人,并相信他们的言论。YMMV。

故事的寓意:如果加载/卸载对您有用,请继续使用它们:-)


2
没有标记为“已接受”,因为它不能完全解决有关问题enabledisable但是由于我仍然很感激该信息而提出反对:)。
雕文

1

TJ Luoma推荐的文章非常有帮助。启动守护程序的步骤:

  1. /Library/LaunchDaemons/照常保存您的plist文件。假设文件为com.example.mysrv.plist,而plist中的Label为com.example.mysrv
  2. sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist。请注意,路径可以是相对的(到$PWD)或绝对的。
  3. 使用检查服务sudo launchctl print system/com.example.mysrv。它应该说“正在运行”。

启动代理应该相似。警告:我不知道如何在不卸载服务的情况下停止服务bootout

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.