Mac 设置自动启动项

方法有二,分别为:

1. 使用用户登录项

进入 系统便好设置 -> 用户与群组 -> 登录项 点击 + 按钮,添加即可。
这种方式比较简单快捷,但是用户登录后才会触发。

2. launchctl 加载 plist 文件

Mac 开机启动时会启动 launchd 进程,然后依次完成以下工作:

  1. 根据 /System/Library/LaunchDaemons 和 /Library/LaunchDaemons 路径下的 plist 文件加载系统级守护进程
  2. 注册上述守护进程需要的套接字及文件描述符
  3. 根据 plist 文件中的 KeepAlive 键值,启动那些需要在系统周期内一直保持的进程
  4. 根据 plist 文件的设定,在条件满足时启动进程
  5. 关机时,给所有由 launchctl 开启的进程发送 SIGTERM 信号

另外:用户登录后才会加载 /System/Library/LaunchAgents 和 /Library/LaunchAgents 路径下的 plist 文件

launchd 配置文件共有 5 个路径:

配置文件路径释义
~/Library/LaunchAgents由用户自己定义的任务项
/Library/LaunchAgents由管理员为用户定义的任务项
/Library/LaunchDaemons由管理员定义的守护进程任务项
/System/Library/LaunchAgents由 macOS 为用户定义的任务项
/System/Library/LaunchDaemons由 macOS 定义的守护进程任务项

启动顺序为:

  1. /System/Library/LaunchDaemons
  2. /Library/LaunchDaemons
  3. /System/Library/LaunchAgents
  4. /Library/LaunchAgents
  5. ~/Library/LaunchAgents

其中:
LaunchDaemons 是用户未登陆前就启动的服务(守护进程)。
LaunchAgents 是用户登陆后启动的服务(守护进程)。

那么我们就可以根据需要来编写 plist 文件达成我们的需求。

plist 文件示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.exampled</string>
<key>ProgramArguments</key>
<array>
<string>exampled</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

plist 文件部分键值说明

详情请看 点我

Label (必须)

服务的名称

ProgramArguments 指定可执行文件路径及参数

比如执行 ls -a,对应到配置中为:

1
2
3
4
5
<key>ProgramArguments</key>
<array>
<string>ls</string>
<string>-a</string>
</array>
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
修改 Mac 上指定应用语言设置
雨后随感