Crontab详解
# 什么是 crontab?
crontab 是一个定时执行任务的工具,在 Linux 系统中广泛使用。它可以让用户在指定的时间自动执行某个指令或脚本,例如自动备份数据、清除日志、定时运行程序等。
# crontab 的工作原理
crontab 依赖于系统 crond 守护进程(又称 cron 服务),该服务默认在后台运行,并周期性地检查用户的 crontab 配置文件是否有要执行的任务。如果有,就按照指定的时间执行对应的任务。
# crontab 的语法
crontab 的语法非常特殊,需要按照固定的格式编写。下面是一个完整的 crontab 语句的例子:
# m h dom mon dow command
* * * * * command
1
2
2
上面这条语句共有 6 个字段,分别代表分钟数(m)、小时数(h)、一个月的第几天(dom)、月份(mon)、星期几(dow)和要执行的命令(command)。以下是每个字段的详细说明:
- Minute:分钟,取值范围为 0-59;
- Hour:小时,取值范围为 0-23;
- Day of Month:一个月的第几天,取值范围为 1-31;
- Month:月份,取值范围为 1-12;
- Day of Week:星期几,取值范围为 0-7(0 和 7 都代表周日,1 代表周一,依此类推);
- Command:要执行的命令。
在每个字段中,你可以使用单个数字、数字范围、逗号(,)、星号(*)和斜杠(/),以构建 crontab 语句。
# 命令
# 查看当前运行的定时任务
crontab -l
1
# 删除所有的定时任务
crontab -r
1
# 编辑定时任务
crontab -e
1
# 执行命令存储文件位置
/var/spool/cron
# 日志所在位置
文件:/var/log/cron
# 使用案例
# 每隔五秒执行一次
# crontab 最小单位是分钟,利用sleep实现每隔五秒钟执行一次
*/1 * * * * /bin/date >>/tmp/date.txt
*/1 * * * * sleep 5 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 10 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 15 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 20 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 25 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 30 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 35 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 40 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 45 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 50 && /bin/date >>/tmp/date.txt
*/1 * * * * sleep 55 && /bin/date >>/tmp/date.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 每天00:05执行
5 0 * * *
1
# 每月1号14:15
15 14 1 * *
1
# 每周从周一到周五 22:00
0 22 * * 1-5
1
# 在线验证工具
https://crontab.guru/ (opens new window)
点击next
可以看到下几次执行时间。
上次更新: 2023/10/08, 09:37:38