在使用 Linux 时,我们经常需要执行一些定时任务,如每天定时重启 Nginx,每周定时重启 MySQL 数据库,每秒爬取一次数据等等,而 crontab 可以非常方便的实现这些定时任务,crontab 也是老王最常用的 Linux 定时任务工具,下面就 crontab 格式和 crontab 用法做一个简单介绍。
一、crontab 简介
crontab 命令常见于 Unix 和类 Unix 的操作系统之中,用于设置周期性被执行的指令。Linux中 ,crontab 也是一个常用的用来定时执行程序的命令,并且一般来说 crontab 会内置,不需要额外安装。
二、crontab 格式与用法
crontab 格式如下:
* * * * * command
5 个 * 分别代表分、时、日、月、周,command 则是需要执行的命令。关于分、时、日、月、周的数值范围介绍如下:
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | command |
---|---|---|---|---|---|---|
数字范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 需要执行的命令 |
其中周的 0 和 7 都代表周日(星期天)。
另外,关于常用的辅助字符解释如下:
特殊字符 | 代表意义 |
---|---|
*(星号) | 代表任何时刻都接受的意思。举例来说,如果日、月、周都是 * ,而分钟是 0,小时是 12,就代表着不论何月、何日的礼拜几的 12:00 都执行后续命令的意思。 |
,(逗号) | 代表分隔时段的意思。举例来说,如果要执行的工作是 3:00 与 6:00 时,就会是:0 3,6 * * * command 时间还是有五列,不过第二列是 3,6 ,代表 3 与 6 都会执行命令。 |
-(减号) | 代表一段时间范围内,举例来说,8 点到 12 点之间的每小时的 20 分都进行一项工作:20 8-12 * * * command 仔细看到第二列变成 8-12 代表 8,9,10,11,12 都适用的意思 |
/n(斜线) | 那个n代表数字,即是每隔 n 单位间隔的意思,例如每五分钟进行一次,则:*/5 * * * * command 用 * 与 /5 来搭配,也可以写成 0-59/5 ,意思相同,这里就表示每 5 分钟执行一次 |
常用的 crontab 任务查看与编辑方式如下:
# 查看用户目前的所有crontab crontab -l # 编辑当前用户的crontab crontab -e
添加完 crontab 定时任务后,直接保存即生效,不需要重启服务器。
三、crontab 定时任务实例
下面以 crontab 每分钟、每小时、每天、每周、每月、每年执行各举一个例子:
- crontab 每3分钟执行一次
*/3 * * * *
- crontab 每小时执行一次
0 * * * *
- crontab 每天执行一次
0 0 * * *
- crontab 每周执行一次
0 0 * * 0
- crontab 每月执行一次
0 0 1 * *
- crontab 每年执行一次
0 0 1 1 *