linux定时任务——crontab

简介

crontab是Linux中用来执行定时任务的工具,操作系统默认会安装该服务工具,并默认启动。

Linux下的任务调度分为两类: 系统任务调度和用户任务调度。

系统任务调度

系统调度任务为系统周期执行的任务,在/etc/crontab中进行配置。

[root czx]# cat /etc/crontab
SHELL=/bin/bash # 指定系统要使用哪个shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin # 指定系统执行命令的路径
MAILTO=root # 电子邮件发送给root用户

# 定时任务
42 4 1 * * root run-parts /etc/cron.monthly

系统任务调度我们不用,这里不多做介绍。

用户任务调度

我们定义的定时任务都是用户任务调度,所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

[root czx]# ll /var/spool/cron/root
-rw-------. 1 root root 39 Jun 25 09:18 /var/spool/cron/root

crontab文件格式

[root czx]# cat /var/spool/cron/root
0 3 * * 6 /czx/clean.sh /czx/clean.log

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(\*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

命令详解

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

-e 编写定时任务
-l 查看定时任务
-r 删除当前用户定时任务

示例

实例1:每1分钟执行一次command

命令

* * * * * command

实例2:每小时的第3和第15分钟执行

命令

3,15 * * * * command