Answers:
供参考,所有3个选项都可以使用。但是,iCal选项比其他选项有更多限制。
(有用于编辑cron的GUI,如其他答案中所述已启动)
Cron是最简单直接的方法,并且众所周知,并且有许多可用的教程。Coles Notes是将下面的最后一行添加到crontab中(通过编辑/etc/crontab
或crontab
在命令行上使用):
MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"
在Mac OS X中,cron
实际上已被替换,launchd
但launchd
向后兼容,cron
您仍然可以使用cron
它的含义,但实际上它launchd
正在完成所有工作。
如果您想使用,launchd
还需要在“超级用户”上查看其他问题:(例如,如何以root用户身份运行启动的命令?)关于要将配置文件(plist文件)保存到何处的信息。因为它的运行时间取决于它存储在哪个目录中以及如何加载(例如,是否使用sudo)-与cron类似。
每日运行一个启动的plist示例(请确保文件和标签相同-减去标签的plist)-该脚本每天凌晨3点运行:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.IDENTIFIER_HERE.SOMETHING</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<false/>
<key>UserName</key>
<string>USERNAME HERE</string>
<key>Program</key>
<string>/PATH/TO/SCRIPT</string>
<key>ProgramArguments</key>
<array>
<string>Argument_1</string>
<string>Argument_2</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>03</integer>
</dict>
</dict>
</plist>
还值得注意的是,如果启动任务是按计划在计算机睡眠或关闭时启动的,它们将在计算机再次可用(打开或唤醒)时运行(尽管无论有多少天都只有一次)是。编辑:我只是在一份Apple文档中说,如果计算机关闭,那么在此期间您将丢失任何启动事件,(您的脚本将不会在启动时启动),(睡眠时会在唤醒时启动脚本)
另一种选择是使用“ at ”(用“ man at”检查手册页)。该脚本可以使用以下方法重新安排自身的时间:
echo "sh $0 $@" | at `date +%H:%M` tomorrow
(使用“ + 10分钟”而不是“明天”每10分钟运行一次;要停止调度,只需执行“在-l”列出已调度的作业ID,然后在“在-r id ”处删除该作业)
您可能必须首先使用(请参阅https://superuser.com/a/43680)启动相应的守护程序(运行):
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
优点:快速修复,无需sudo / root访问,易于执行复杂的计划模式缺点:不是用于OS X的标准计划方法(已发布)
launchd
是在OS X下的路要走
crontab -e
,它将带您进入文件的基于终端的文本编辑器,该文件在保存时将成为您的个人crontab。
LaunchControl是另一个用于launchd / launchctl的GUI。尽管其他人提到的替代方案完全有能力每天启动脚本,但是使用LaunchControl可以配置复杂的计划(例如“每周日一次,周末在下午2点至晚上8点之间的每个小时”)。它也是(AFAIK)唯一可以实际验证作业的工具。如果一项工作没有按预期进行,它将向您显示原因。
您可以随意尝试任意长时间。
这是一个简单的免费实用程序,用于生成plist XML:
http://www.gieson.com/Library/projects/utilities/launcha/
使用此工具,无需安装程序,只需将结果保存到Library / LaunchAgents文件夹中即可。
RunAtStart
其设置为false(除非您希望它为true)。我花了一个小时弄清楚为什么Finder会冻结并阻止启动时加载桌面。禁用RunAtStart
不会干扰固定的计划。
如果日历事件满足您的需求,则内置的Automator应用程序还允许您创建由日历事件触发的日历警报。您可以使用一些基于UI的内置操作来执行所需的操作,也可以让它运行某些应用程序或自定义AppleScript,JavaScript或Shell脚本。