crontab定时任务详解
定时任务
# 查看所有配置的cron任务
crontab -l
# 创建定时任务
crontab -e
# crontab 启动
service crond start
# crontab 服务状态查看
service crond status
# 查看crontab 运行日志,日志目录
ll /var/log/cron*
/etc/crontab 文件中的每一行都代表一项任务,它的格式是:
minute hour day month dayofweek command |
minute — 分钟,从 0 到 59 之间的任何整数
hour — 小时,从 0 到 23 之间的任何整数
day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)
command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)
在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
开头为井号(#)的行是注释,不会被处理
当我们要增加全局性的计划任务时,一种方式是直接修改/etc/crontab。但是,一般不建议这样做,/etc/cron.d目录就是为了解决这种问题而创建的。
例如,增加一项定时的备份任务,我们可以这样处理:在/etc/cron.d目录下新建文件backup.sh,内容如下:
# m h dom mon dow user command
* 1 * * * root /sbin/mon_zetc_logtar.sh
cron进程执行时,就会自动扫描该目录下的所有文件,按照文件中的时间设定执行后面的命令。
cron执行时,也就是要读取三个地方的配置文件:
一是/etc/crontab,这个文件中有用户名字段;
二是/etc/cron.d目录下的所有文件;
三是每个用户的配置文件,每个用户都会自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下:
[root@localhost cron]# cd /var/spool/cron
[root@localhost cron]# ls
oracle root
用命令crontab -l –u root
crontab [-u username] //省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作作)
如:如果你用命令crontab -r 就会删除当前用户的crontab文件,例如你切换到oracle账号下,执行了该命令,那么/var/spool/cron/oracle文件就会删除,如果要创建该文件只需要用crontab -e命令即可。
注意,普通用户一般没有权限访问/var/spool/cron
其他crontab相关的文件或者文件夹
[root@datacenter01 etc]# ll /etc | grep cron
crontab 是设定定时任务执行文件
cron.d 是系统自动定期需要做的任务
cron.daily 是每天执行一次的job
cron.weekly 是每个星期执行一次的job
cron.hourly 是每个小时执行一次的job
cron.monthly 是每月执行一次的job
cron.deny 文件就是用于控制不让哪些用户使用Crontab的功能
anacrontab anacrontab 的配置文件,关于anacrontab的具体作用我们会在下文说明