launchctl

2022-11-23

macOS 计划任务管理。

命令

  • launchctl list:列出
    • 78311 0 com.immwind
      • 78311 :进程号(- 表示未运行)
      • 0:成功退出
      • com.immwind:任务名
  • launchctl stop <plist>:停止
  • launchctl start <plist>:启动(启动前需先加载)
  • launchctl restart <plist>:重启
  • launchctl load <plist>:加载
  • launchctl unload <plist>:卸载指定任务(内容变更后需先卸载)

保存位置

  • ~/Library/LaunchAgents:用户自定义的任务(用户登录后才执行)
  • /Library/LaunchAgents:管理员定义的任务
  • /Library/LaunchDaemons:管理员定义的守护进程任务(系统启动即执行)
  • /System/Library/LaunchAgents :系统定义的任务
  • /System/Library/LaunchDaemons:系统定义的守护进程任务

执行周期

StartCalendarInterval 指定时间执行

1
<key>StartCalendarInterval</key>
2
<dict>
3
<key>Minute</key> # 分钟
4
<integer>30</integer>
5
<key>Hour</key> # 小时
6
<integer>9</integer>
7
<key>Weekday</key> # 周几(周日 0 或 7)
8
<integer>9</integer>
9
<key>Month</key> # 月
10
<integer>9</integer>
11
</dict>

StartInterval:间隔时间执行

1
# 间隔一小时执行
2
<key>StartInterval</key>
3
<integer>3600</integer>

说明

1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
<plist version="1.0">
4
<dict>
5
<key>Label</key> # 名称,唯一
6
<string>com.irs</string>
7
<key>KeepAlive</key> # 意外挂掉是否重启
8
<false/>
9
<key>RunAtLoad</key>
10
<true/>
11
<key>RunAtLoad</key>
12
<true/>
13
<key>ProgramArguments</key> # 要执行的脚本
14
<array>
15
<string>/Users/immwind/Dropbox/scripts/irs_sync.sh</string>
16
</array>
17
<key>StartInterval</key>
18
<integer>360</integer>
19
</dict>
20
</plist>

参考