在 macOS 上设置定时任务可以使用 launchd, 这是 macOS 的一个守护程序和任务管理工具。下面是详细步骤:

步骤 1: 创建 Shell 脚本

首先,你需要创建一个 shell 脚本,这个脚本包含了你想要定期执行的命令。例如,创建一个名为 my_script.sh 的文件,并在其中添加你的命令:

1
2
3
#!/bin/bash
# 这里是你要执行的命令
echo "Task ran at $(date)" >> /path/to/logfile.txt

确保将这个脚本文件保存在你的用户目录中,并且使用 chmod 命令使其可执行:

1
chmod +x /path/to/my_script.sh

步骤 2: 创建 Launchd 配置文件

然后,你需要创建一个 launchd 配置文件。这个文件通常放在 ~/Library/LaunchAgents/ 目录下。例如,创建一个名为 com.user.mytask.plist 的文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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.user.mytask</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/my_script.sh</string>
</array>
<key>StartInterval</key>
<integer>1728</integer>
<key>StandardErrorPath</key>
<string>/tmp/com.user.mytask.err</string>
<key>StandardOutPath</key>
<string>/tmp/com.user.mytask.out</string>
</dict>
</plist>

步骤 3: 加载和启动任务

将该 .plist 文件保存到 ~/Library/LaunchAgents/ 目录。然后,使用 launchctl 命令加载和启动你的定时任务:

1
2
3
sudo chown root ~/Library/LaunchAgents/com.user.mytask.plist
sudo chgrp wheel ~/Library/LaunchAgents/com.user.mytask.plist
launchctl load ~/Library/LaunchAgents/com.user.mytask.plist

这样,你的 shell 脚本将会每隔 1728 秒执行一次。

步骤 4: 检查任务状态

你可以检查你的任务是否正在运行:

1
launchctl list | grep com.user.mytask

调试时可以查看 /tmp/com.user.mytask.out/tmp/com.user.mytask.err 文件以了解脚本执行情况。