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点
0 4 1 1 *
    原文作者:whisshe
    原文地址: https://www.jianshu.com/p/beaba5e65242
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞