crontab 是一个命令,它允许您以特定的时间间隔执行命令,而且您还不用到时登录。crontab 会将您命令的输出通过电子邮件寄送给您。您可以以分钟、小时、天、甚至月来指定间隔。根据选项不同,crontab 的功能会有一定的区别:
让我们首先来编辑一个 crontab。如果您输入 crontab -e,您将会看到您喜爱的文本编辑器。至于是何编辑器,取决于您在 EDITOR 或 VISUAL 环境变量中设置的值,如果没有设置的话将会使用 Vi。crontab 文件中的每一行都由六个部分组成。前五个部分是时间间隔,分别对应分钟、小时、月中的天数、月份以及一周中的天数。第六部分是要执行的命令。以 # 开头的行将被当作注释,crond(担负着执行 crontab 文件的程序)也会将其忽略。这里是 crontab 的一个例子:
注意 | |
---|---|
为了让输出更加美观,我们打断了较长的行。不过您在输入的时候一定要确保它们出现在一行上。如果您在行尾遇到了 \ 字符,就应该知道下一行是紧接着上一行的。这种情况同样适用于 Makefile 文件、shell 以及其它环境。 |
# 如果您不想发送邮件,只需取消以下行的注释 #MAILTO="您的电子邮件地址" # # 每两天在下午两点报告上例中的新图像 - 然后,再 # 重新“touch”“stamp”文件。“%”将被当作换 # 行符,这允许您在同一行放置多个命令。 0 14 */2 * * find /shared/images \ -cnewer /shared/images/stamp \ -a -iregex ".*\.jpe?g" \ -a -not -regex \ ".*/old/.*"%touch /shared/images/stamp # # 每个圣诞节播放一首歌 :) 0 0 25 12 * mpg123 $HOME/sounds/merryxmas.mp3 # # 每个星期二下午五点,打印购物清单... 0 17 * * 2 lpr $HOME/shopping-list.txt |
在本例中,有好几种不同的方法指定间隔。例如,您可以指定一组离散值,中间用逗号分开(1,14,23),也可以使用范围(1-15),甚至组合二者使用(1-10,12-20),可选使用步进增量(1-12,20-27/2)。现在该您自己将理论付诸实践了!
您可能想要在某一天的特定时间执行一条命令,但并不经常执行。例如,您今天晚上六点有个约会,希望计算机能够提醒您注意。您运行了 X,而且也安装了 X11R6-contrib 软件包,而您想要在五点半的时候,计算机通知您该走了。at 在这种情况下就能帮到您:
$ at 5:30pm # 您现在应该看到“at”提示符 at> xmessage "现在该走了!六点有约会" # 按 Ctrl-D 可退出 at> <EOT> $ |
您可以以不同的方式指定时间:
now + <间隔>:意味着自现在起指定间隔后(可选。未指定间隔代表现在)。间隔的语法为 <n> (minutes|hours|days|weeks|months)。例如,您可以指定 now + 1 hour(自现在起一小时后),now + 3 days(自现在起三天后)等等。
<时间><日期>:完整的指定日期。<时间>参数是必需的。at 能够非常智能地接受您所给出的任何时间参数:您可以输入 0100、04:20、2am、0530pm、1800 或者以下三个特殊值:noon(中午十二点)、teatime(下午四点)和midnight(午夜十二点)。<日期>参数是可选的。您也可以用不同的方式来表示同一个日期2001年12月20日,比如:12/20/2001,或者欧洲格式 20.12.2001。您可以省略年份,但此时只能接受欧洲格式:20.12。您还可以用完整的字母来指定月份:Dec 20 或 20 Dec,这都是可以的。