马春杰杰博客
致力于深度学习经验分享!

macOS中Launchctl介绍以及LaunchDaemons和LaunchAgents的区别

文章目录
[隐藏]

OS X 10.4 Tiger开始,Apple要求开发者使用launch daemons and agents配置自启动项,launch daemonslaunch agentslaunchd进程管理。launchdmacOS下用于初始化系统环境的关键进程,它是内核装载成功之后在OS环境下启动的第一个进程。采用这种方式来配置自启动项只需要一个plist文件,该plist文件存在于以下目录,各目录决定了其启动的先后和拥有的权限

  • ~/Library/LaunchAgents # 特定用户登录后以当前用户启动,第三方程序一般都放这里
  • /Library/LaunchAgents # 任一用户登录后以当前用户启动,管理员使用
  • /System/Library/LaunchAgents # 系统组件,任一用户登录后以当前用户启动
  • /Library/LaunchDaemons # 系统装载时以root用户启动,管理员使用
  • /System/Library/LaunchDaemons # 系统组件,系统装载时以root用户启动

目录区别:

  • /System/Library # 存放Apple开发的系统组件。
  • /Library # 存放系统管理员安装的程序。
  • ~/Library # 存放普通用户安装的程序。

launch daemon和launch agents区别:

它们本质上都是守护进程,launch daemons系统装载时启动,属于所有用户;launch agents是某个用户拥有的程序,在这个用户登录后启动

Launchctl 相关命令

查看已有的任务:

launchctl list

查看指定的任务 xxx 是否存在(加载):

launchctl list | grep xxx

加载指定的任务 xxx:

launchctl load -w xxx

launchctl load xxx

删除任务:

launchctl unload -w xxx

launchctl load xxx

开始任务:

launchctl start xxx

停止任务:

launchctl stop xxx

注意:

  • 如果任务修改了,必须先 unload,然后重新执行 load
  • start 可以测试任务,这个命令是立即执行,不管时间到了没有
  • 执行 start 和 unload 命令前,任务必须先执行过 load,否则报错
  • .plist 中不要添加 KeepAlive 标签,否则无条件 10s 定时执行

关于如何使用Launchctl进行脚本定时运行:

关于如何使用Launchctl进行脚本开机自启:

本文最后更新于2023年1月31日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

如果你对这篇文章有什么疑问或建议,欢迎下面留言提出,我看到会立刻回复!

打赏
未经允许不得转载:马春杰杰 » macOS中Launchctl介绍以及LaunchDaemons和LaunchAgents的区别
超级便宜的原生ChatGPT4.0

留个评论吧~ 抢沙发 评论前登陆可免验证码!

私密评论
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址(选填,便于回访^_^)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

忘记密码 ?

切换登录

注册