crontab-定时任务

简介

crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crond服务常驻于后台运行,该服务每一分钟检查是否有预定的作业需要执行crontab储存的指令,这类作业一般称为cron jobs。

crond服务

crond服务常用命令如下:

1
2
3
4
5
service crond start     //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态

crontab文件

crontab文件保存在/etc目录下,使用vim命令编辑;

1
vim /etc/crontab

可以看到类似如下界面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 executedp

根据注释就知道了添加任务的基本格式如下:
分 时 日 月 周 用户 命令
用户是可以省略的。
时间格式如下:

*:表示任意的时刻;如小时位 * 则表示每个小时
n:表示特定的时刻;如小时位 5 就表示5时
n,m:表示特定的几个时刻;如小时位 1,10 就表示1时和10时
n-m :表示一个时间段;如小时位 1-5 就表示1到5点
*/n : 表示每隔多少个时间单位执行一次;如小时位 */1 就表示每隔1个小时执行一次命令,也可以写成 1-23/1

示例

1
2
3
4
5
* 1 * * * /opt/script/backup.sh         //从1:0到1:59 每隔1分钟 执行
15 05 * * * /opt/script/backup.sh //05:15 执行
*/10 * * * * /opt/script/backup.sh //每隔10分 执行
0 17 * * 1 /opt/script/backup.sh //每周一的 17:00 执行
2 8-20/3 * * * /opt/script/backup.sh //8:02,11:02,14:02,17:02,20:02 执行