分类: LINUX
2013-07-25 15:46:15
在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。
如:
[root@dave ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-l 列出用户的时程表
-r 删除用户的时程表
-v 列出用户cron作业的状态
-i 删除用户时程表前提示
其中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。
添加的命令必须以如下格式:
* * * * * command path
前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。
前5个字段分别表示:分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
还可以用一些特殊符号:*: 表示任何时刻
,: 表示分割
-:表示一个段,如第二端里: 1-5,就表示1到5点
/n : 表示每隔n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
在命令行输入
$: crontab cronfile
这样就将cronfile文件提交给c r o n进程,同时,新创建cronfile的一个副本已经被放在/ v a r / s p o o l / c r o n目录中,文件名就是用户名。
启动cron进程的方法:/etc/init.d/crond start通过 /etc/crontab 文件,可以设定系统定期执行的任务,当然,要想编辑这个文件,得有root权限
0 7 * * * root mpg123 ~/wakeup.mp3
分 时 日 月 周
示例:
0 4 * * 0 root emerge --sync && emerge -uD world #每周日凌晨4点,更新系统
0 2 1 * * root rm -f /tmp/* #每月1号凌晨2点,清理/tmp下的文件
0 8 6 5 * root mail robin < /home/galeki/happy.txt #每年5月6日早8点给robin发信祝他生日快乐
假如,我想每隔2分钟就要执行某个命令,或者我想在每天的6点、12点、18点执行命令,诸如此类的周期,可以通过 “ / ” 和 “ , ” 来设置:
*/2 * * * * root ............... #每两分钟就执行........
0 6,12,18 * * * root ............... #每天6点、12点、18点执行........
每两个小时:
0 */2 * * * echo "have a break now." >> /tmp/test.txt
晚上11点到早上8点之间每两个小时,早上八点:
0 23-8/2,8 * * * echo "have a good dream:)" >> /tmp/test.txt
每个月的4号与每个礼拜的礼拜一到礼拜三的早上11点:
0 11 4 * 1-3 command line
1月1日早上4点:
0 4 1 1 * command line