Linux任务计划之crontab

Linux 上原本就有非常多的计划性工作,因此这个系统服务是默认启动的。由于实际工作需要,使用者也可以自己设置任务计划,比如定期移动或者删除某些文件,定期对某些文件归档压缩等等。Linux提供了周期性任务的命令crontab。crond是linux周期性任务计划的一个守护进程,并且会自动启动,crond进程会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:
SuSE:~/Desktop # less /etc/crontab
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
51 * * * * root run-parts /etc/cron.hourly

第1行SHELL变量指定了系统使用的shell类型是bash。
第2行PATH变量指定了系统执行命令的路径。
第3行MAILTO指定了crond执行信息将通过电子邮件发送给root用户。第4行是任务计划主要部分,下面进行分析。
crontab文件的格式如下:
* * * * * 任务内容1
* * * * * 任务内容2
* * * * * 任务内容3
……………….
……………….

crontab文件的含义:
在crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,共分为6段,5个星号表示执行任务的时间 点,分别是 minute hour day month week;第6段任务内容可以是一条shell命令,也可以是一个shell脚本。
minute:分钟;可以是从0到59之间的任何整数
hour:小时;可以是从0到23之间的任何整数。
day:日期;可以是从1到31之间的任何整数。
month:月份;可以是从1到12之间的任何整数。
week:星期几;可以是从0到6之间的任何整数,0表示周日。

例如:
0 * * * * 每月每天每小时的第0分钟
*/20 6-12 * 12 * 每年的12月内,每天6点到12点中,每隔20 分钟
0 17 * * 1-5 周一到周五每天17点
20 0-23/2 * * * 每月每天从0点起每隔2小时20分钟

crontab基本用法:
crontab -r/-e/-l
-r:删除当前任务计划
-e: 编辑任务计划
-l: 列出当前任务计划

例:在/下有一date.txt文件,要求每隔1分钟将date命令的结果追加到date.txt文本中。
crontab -e
*/1 * * * * date >> /date.txt
保存退出,稍等几分钟,打开date.txt,效果如下:
SuSE:~/Desktop # cat date.txt
Sat Feb 14 16:01:01 CST 2015
Sat Feb 14 16:02:01 CST 2015
Sat Feb 14 16:03:01 CST 2015
Sat Feb 14 16:04:01 CST 2015

如果有脚本任务计划,请将date >> /date.txt换成对应脚本即可。
上面只是简单举例,更复杂的情况请在工作中实践。

Leave a Reply