在 macOS 上,你可以使用 launchd 来设置定时任务。下面是设置定时任务的一般步骤:
1. 创建脚本:
首先,创建一个包含你要执行的任务的脚本文件。确保脚本有执行权限。
# 例如,创建一个简单的 Bash 脚本
echo "#!/bin/bash" > /path/to/your/script.sh
echo "echo 'Hello, World!'" >> /path/to/your/script.sh
chmod +x /path/to/your/script.sh
2. 创建 Property List (plist) 文件
创建一个 Property List 文件,该文件描述了你的定时任务。你可以使用文本编辑器创建一个 plist 文件。例如:
<?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.mytask</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/script.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>
在上面的例子中,Label 是任务的唯一标识符,ProgramArguments 包含要执行的脚本的路径,RunAtLoad 表示在加载时运行,StartInterval 表示定时任务的间隔时间(以秒为单位,这里是60秒)。
3. 保存 plist 文件:
将 plist 文件保存到 ~/Library/LaunchAgents/ 目录中,命名为 com.example.mytask.plist(你可以自定义文件名,但确保文件名以 .plist 结尾)。
4. 加载定时任务:
执行以下命令加载定时任务。
launchctl load ~/Library/LaunchAgents/com.example.mytask.plist
这将立即启动任务,并在以后的每个间隔时间运行它。
5. 检查任务是否在运行
你可以使用 launchctl list 命令检查任务是否在运行。
launchctl list | grep com.example.mytask
如果看到输出,则任务正在运行。
这是一个简单的例子,你可以根据需要调整 plist 文件中的参数,以适应你的实际需求。请注意,如果你修改了 plist 文件,你需要重新加载任务。
请记得在使用 launchd 设置定时任务时,确保你的脚本和任务的配置是正确的,以避免不必要的问题。
补充
plist文件分布在:
/System/Library/LaunchDaemons # 是用户未登陆前就启动的服务(守护进程)
/System/Library/LaunchAgents # 由Mac OS X为用户定义的任务项
/Library/LaunchDaemons # 由管理员定义的守护进程任务项
/Library/LaunchAgents # 由管理员为用户定义的任务项
~/Library/LaunchAgents # 由用户自己定义的任务项
显示当前的启动脚本,status等于0就正常,等于正数,比如78,就是错误。
launchctl list
开机时自动启动 php-fpm, -w 是立即启动的意思
sudo launchctl load -w /Library/LaunchAgents/org.php.php-fpm.plist
停止正在运行的启动脚本
sudo launchctl unload [path/to/script]
再加上-w选项即可去除开机启动
sudo launchctl unload -w [path/to/script]
评论