linux的计划任务
时间:2008-12-04 来源:shibanyu
Windows下有at命令来操作计划任务,类unix系统则是使用crontab程序来操作计划任务。关于crontab的使用说明请man crontab。
crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组成,域之间用空格或Tab分开,其中:
minutes: 分钟,值的范围是0到59
hours: 小时,值的范围是0到23
day of month: 日期,值的范围是1到31
month: 月份,值的范围是1到12
day of week: 星期,值的范围是0到6,星期日值为0
command: 所要运行的命令,通常是我们的脚本。
如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。
如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字本身)。
如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。
如果日期域和星期域都有值,则这两个域都有效。
补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export),因为即使使用#!/bin/env sh这样的魔法字符也不能和shell的环境变量一样。
我使用时通常是先导出计划任务表到一个文件,然后修改它,再导入。
crontab -l > tmp.txt
vi tmp.txt
crontab tmp.txt
rm tmp.txt
网上比较好的例子:
#每天早上6点10分
10 6 * * * /bin/date
#每两个小时
0 */2 * * * /bin/date (solaris 5.8似乎不支持此种写法)
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * /bin/date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed /bin/date
#1月1日早上4点
0 4 1 jan * /bin/date
crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组成,域之间用空格或Tab分开,其中:
minutes: 分钟,值的范围是0到59
hours: 小时,值的范围是0到23
day of month: 日期,值的范围是1到31
month: 月份,值的范围是1到12
day of week: 星期,值的范围是0到6,星期日值为0
command: 所要运行的命令,通常是我们的脚本。
如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。
如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字本身)。
如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。
如果日期域和星期域都有值,则这两个域都有效。
补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export),因为即使使用#!/bin/env sh这样的魔法字符也不能和shell的环境变量一样。
我使用时通常是先导出计划任务表到一个文件,然后修改它,再导入。
crontab -l > tmp.txt
vi tmp.txt
crontab tmp.txt
rm tmp.txt
网上比较好的例子:
#每天早上6点10分
10 6 * * * /bin/date
#每两个小时
0 */2 * * * /bin/date (solaris 5.8似乎不支持此种写法)
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * /bin/date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed /bin/date
#1月1日早上4点
0 4 1 jan * /bin/date
相关阅读 更多 +