macOS 定时任务(自动化任务)
目录
使用守护程序与服务来实现定时任务
- 系统自带的 launchd。参考文章「macOS 的守护程序和服务」了解基础知识和基本用法。
- 或使用 pm2
以下是使用 launchd 的方法
macOS 的守护程序是 launchd,使用 launchctl
命令进行管理。
要创建一个定时任务,首先需要创建一个服务配置文件,然后使用 launchctl
命令来加载该配置到系统中,并启动/停止或卸载。
1. 创建配置文件
下面是一个示例配置文件,它会每隔一小时使用 bash
执行一个脚本 /path/to/task.sh
:
<?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.run_task</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>/path/to/task.sh</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
</dict>
</plist>
固定时间(日历)执行,使用 StartCalendarInterval
例如在每个月的第7天的13:45启动任务:
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>45</integer>
<key>Hour</key>
<integer>13</integer>
<key>Day</key>
<integer>7</integer>
</dict>
更多触发方式可参考:apple.com CreatingLaunchdJobs
2. 加载/卸载配置文件
使用 launchctl
命令将配置加载到系统中。
launchctl load /path/to/com.example.task.plist
卸载配置:
launchctl unload /path/to/com.example.task.plist
手工启动/停止任务
launchctl start ccom.example.task
launchctl stop com.example.task
列出系统当前的任务
launchctl list | grep 'com.example.task
参考: