什么是 crontab?
crontab 是一个定时执行任务的工具,在 Linux 系统中广泛使用。它可以让用户在指定的时间自动执行某个指令或脚本,例如自动备份数据、清除日志、定时运行程序等。
crontab 的工作原理
crontab 依赖于系统 crond 守护进程(又称 cron 服务),该服务默认在后台运行,并周期性地检查用户的 crontab 配置文件是否有要执行的任务。如果有,就按照指定的时间执行对应的任务。
crontab 的语法
crontab 的语法非常特殊,需要按照固定的格式编写。下面是一个完整的 crontab 语句的例子:
# m h dom mon dow command
* * * * * command
上面这条语句共有 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
删除所有的定时任务
crontab -r
编辑定时任务
crontab -e
执行命令存储文件位置
/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
每天00:05执行
5 0 * * *
每月1号14:15
15 14 1 * *
每周从周一到周五 22:00
0 22 * * 1-5
在线验证工具
https://crontab.guru/
点击next
可以看到下几次执行时间