crontab详解
目录
简单介绍
crontab
是一个可以根据时间、日期、月份、星期的组合调度对重复任务的执行的守护进程。
要使用cron
服务,你必须安装了vixie-cron RPM
软件包,而且必须在运行crond
服务。判断该软件包是否安装,使用rpm -q vixie-cron
来确定。判断服务是否在运行,使用service crond status
来确定。
配置文件介绍
Linux下的任务调度分为两种:系统任务调度和用户任务调度。
系统任务调度
系统周期性要执行的工作,比如写缓存数据到硬盘、日志清理。/etc/crontab
是系统任务调度的配置文件。包含下列几行:
前四行是用来配置crond任务运行的环境变量。第一行SHELL
变量指定了crond
使用shell
环境。这里使用的是bash
;第二行是PATH
指定了系统指定了系统执行命令的PATH
;第三行MAILTO
指定了crond
的任务执行信息通过邮件发送到的用户,这里是发送给root;第四行的HOME
指定的是执行命令或者脚本的主目录。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="root"
HOME=/
# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
用户任务调度
用户定期执行的任务,比如用户的数据备份,脚本执行等等。用户可以使用crontab
定制自己的计划任务,用户定义的计划任务会被保存在/var/spool/cron
目录下。文件会以用户名进行命名,还可以对用户的使用权限进行定义。
/etc/cron.deny #文件中列出的用户不能使用crontab
/etc/cron.allow #文件中列出的用户可以使用crontab
/var/spool/cron #用户crontab计划任务文件存放目录
crontab文件介绍
crontab
文件中,每一行代表一个任务;每行有六列,每列代表一项设置,前五列为时间频率设定,第六列是要执行的任务。示例:
minute hour day mouth week command #分 时 日 月 周 命令
minute
表示分钟,可以是0~59的任意整数。
hour
表示小时,可以是2~23的任意整数
day
表示日期,可以是1~31的任意整数
month
表示月份,可以是1~12的任意整数
week
表示星期几,可以是0~7之间的整数,0或者7表示星期天
command
表示执行的命令
上面的设置除了数字之外还可以使用特殊字符:
星号*
:表示所有可能的值,可以理解为每。
逗号,
:用逗号隔开的值表示一个列表范围,如1,2,3 * * * *每天每小时的第一、第二、第三分钟。
中杠-
:用中杠隔开的值表示一个数值范围,如1-10 * * * *每天每小时的1到10分钟。
正斜线/
:指定执行任务的间隔频率,如 0 10-18/2 * * *每天的十点到十八点间隔2小时执行。
crontab实例
# 每分钟执行一次
* * * * *
# 每小时的第3和第15分钟执行
3,15 * * * *
#在上午的8点到11点的第3和第15分钟执行
3,15 8-11 * * *
#在每隔2天的上午8点和11点的第3和第15分钟执行
3,15 8-11 */2 * *
#每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1
#每晚的21:30执行
30 21 * * *
#每月1、10、22日的4:30执行
30 4 1,10,22 * *
#每周六、日1:10执行
10 1 * * 6,7
#每天18:00到23:00之间每隔30分钟执行
0/30 18-23 * * *
#星期六的23:00执行
0 23 * * 6
#每小时执行一次
* */1 * * *
#晚上11点到早上7点之间,每小时执行一次
* 23-7/1 * * *
#每月的4号与每周一到周三的11点
0 11 4 * 1-3
#一月一号的4点
* 4 1 1 *