从OS X 10.4 Tiger
开始,Apple
要求开发者使用launch daemons and agents
配置自启动项,launch daemons
和launch agents
由launchd
进程管理。launchd
是macOS
下用于初始化系统环境的关键进程,它是内核装载成功之后在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 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!