[root@localhost ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
注意:
(1)每一行定义一个周期性的任务,共七个字段:
* * * * *:定义周期性的时间
user-name:运行任务的用户身份
command to be executed:任务
(2)此处的环境变量不同于用户登录后获得的环境,因此建议使用绝对路径,或者之定义PATH路径
(3)执行结果邮件发送给MAILTO指定的用户。
周期时间表示法则: (1)特定值 给定时间点有效取值范围内的值 注意:day of week 和day of mouth一般不同时使用 (2)* 给定时间点有效取值范围内的所有值,表示每... (3)离散取值 在时间点上使用逗号分隔的多个值:#,#,# (4)连续取值 在时间点上使用逗号分隔的多个值:#-# (5)在指定时间上,定义步长 /#,#即步长
注意:
(1)指定的时间点不能被步长真出时,其意义将不复存在;
(2)最小时间单位为分钟,想完成秒级人物,的需要额外借助其他的机制。
示例:
(1) 3 * * * *:每小时执行一次;每小时的第3分钟; (2) 3 4 * * 5:每周执行一次;每周5的4点3分; (3) 5 6 7 * *:每月执行一次;每月的7号的6点5分; (4) 7 8 9 10 *:每年执行一次;每年的10月9号8点7分; (5) 9 8 * * 3,7:每周三和周日的8点7分 (6) 0 8,20 * * 3,7:每周三和周日的20点和20点8分执行; (7) 0 9-18 * * 1-5:每周一到周五的早上9点到18点 (8) */5 * * * *:每5分钟执行一次某任务;
当给用户创建一个周期性的任务的时候,会在/var/spool/cron生成一个与其用户名相同的配置文件。
下面就来讲一下crontab命令:
语法:crontab [OPTIONS] OPTIONS: -e:编辑任务 -l:列出所有任务 -r:移除所有的任务,即删除/var/spool/cron/USERNAME文件 -i:在使用-r选项移除所有任务提示用户 -u user:root用户可为指定用户管理cron任务
下面我们就来举个例子吧!
比如每分钟打印一个echo:
[frank@localhost ~]$ crontab -e no crontab for frank - using an empty one * * * * * echo "hello"
列出所有的任务:
[frank@localhost ~]$ crontab -l * * * * * echo "hello"
移除所有的任务:
[frank@localhost ~]$ crontab -r [frank@localhost ~]$ crontab -l no crontab for frank
运行的结果以邮件通知给当前的用户,如果拒绝接受邮件,可以使用输出重定向:
COMMAND > /dev/null
注意:定义COMMAND时,如果命令需要用到%,需要对其转义,但放置于单引号中的%不用转义。
crond服务读取配置文件的位置:
一般来说,crond预设有三个地方会有执行的脚本配置,他们分别是:
/etc/crontab
/etc/cron.d/*
/var/spool/cron/*
前两个是与系统运作有关系,最后一个主要用户用自己。
下面我们来看一下/etc/cron.d/目录下的文件吧!
[root@localhost ~]# ll /etc/cron.d/ total 4 -rw-r--r--. 1 root root 128 Mar 31 2016 0hourly [root@localhost ~]# cat /etc/cron.d/0hourly # Run the hourly jobs SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 01 * * * * root run-parts /etc/cron.hourly #run-parts脚本会在大约5分钟内随机选择一个时间去执行/etc/cron.hourly内的所有文件