Mac 设置自动启动项
方法有二,分别为:
1. 使用用户登录项
进入 系统便好设置
-> 用户与群组
-> 登录项
点击 + 按钮,添加即可。
这种方式比较简单快捷,但是用户登录后才会触发。
2. launchctl 加载 plist 文件
Mac 开机启动时会启动 launchd 进程,然后依次完成以下工作:
- 根据 /System/Library/LaunchDaemons 和 /Library/LaunchDaemons 路径下的 plist 文件加载系统级守护进程
- 注册上述守护进程需要的套接字及文件描述符
- 根据 plist 文件中的 KeepAlive 键值,启动那些需要在系统周期内一直保持的进程
- 根据 plist 文件的设定,在条件满足时启动进程
- 关机时,给所有由 launchctl 开启的进程发送 SIGTERM 信号
另外:用户登录后才会加载 /System/Library/LaunchAgents 和 /Library/LaunchAgents 路径下的 plist 文件
launchd 配置文件共有 5 个路径:
配置文件路径 | 释义 |
---|---|
~/Library/LaunchAgents | 由用户自己定义的任务项 |
/Library/LaunchAgents | 由管理员为用户定义的任务项 |
/Library/LaunchDaemons | 由管理员定义的守护进程任务项 |
/System/Library/LaunchAgents | 由 macOS 为用户定义的任务项 |
/System/Library/LaunchDaemons | 由 macOS 定义的守护进程任务项 |
启动顺序为:
- /System/Library/LaunchDaemons
- /Library/LaunchDaemons
- /System/Library/LaunchAgents
- /Library/LaunchAgents
- ~/Library/LaunchAgents
其中:
LaunchDaemons 是用户未登陆前就启动的服务(守护进程)。
LaunchAgents 是用户登陆后启动的服务(守护进程)。
那么我们就可以根据需要来编写 plist 文件达成我们的需求。
plist 文件示例
1 |
|
plist 文件部分键值说明
详情请看 点我
Label (必须)
服务的名称
ProgramArguments 指定可执行文件路径及参数
比如执行 ls -a
,对应到配置中为:
1 | <key>ProgramArguments</key> |
RunAtLoad (可选)
标识 launchd 在加载完该项服务之后立即启动路径指定的可执行文件。默认值为 false,设置为 true 即可实现开机运行脚本文件
StartCalendarInterval (可选)
该关键字可以用来设置定时执行可执行程序,可使用 Month, Day, Hour, Minute, Second等子关键字,它可以指定脚本在多少月,天,小时,分钟,秒,星期几等时间上执行,若缺少某个关键字则表示任意该时间点,类似于 Unix 的 Crontab 计划任务的设置方式,比如在该例子中设置为每小时的20分的时候执行该命令
KeepAlive (可选)
是否保持持续运行
注:所有 key 关键字详细使用说明可以在 macOS 终端下使用命令 man launchd.plist
查询
UserName (可选)
指定运行启动项的用户,只有当 Launchd 作为 root 用户运行时,此项才使用
GroupName (可选)
指定运行启动项的组,只有当 Launchd 作为 root 用户运行时,此项才适用
检查 plist 文件语法是否正确
1 | plutil ~/Library/LaunchAgents/example.plist |
载入配置, 使其生效
1 | launchctl load ~/Library/LaunchAgents/example.plist |
卸载配置
1 | launchctl unload ~/Library/LaunchAgents/example.plist |
查看服务运行状态
1 | launchctl list |
感谢您的阅读,本文由 三十七度一 版权所有。如若转载,请注明出处:三十七度一(https://ultrarex.com/p/9bda.html)