crontab定时任务全攻略
crontab定时任务全攻略
ZhangCurrycrontab定时任务全攻略
一、crontab是什么?
crontab 是 Linux 自带的定时任务管理器。就是在指定时间,自动执行你写好的命令或脚本,解放运维人员的双手,不用手动值守就能完成各类定时操作。
二、5 个最常用命令
1 | #查看当前用户的定时任务 |
当然我们主要使用的是crontab -e 编辑,crontab -l 查看这两个命令。
三、时间格式
1 | * * * * * 命令/脚本分 时 日 月 周 |
简单说明:
*代表每一个单位(每分钟、每时、每天…)*/5每隔 5 个单位1,3,5第1、第3、第51-5范围 1~5
四、高频示例(脚本)
1 | #每分钟执行一次 |
五、高频示例(命令)
简单的命令可以不用写脚本,crontab 可直接执行命令!举个例子:为防止日志无限制增加,我们需要每天定时删除7天前的日志。
1 | find /data -name "*.log" -mtime +7 -delete -mtime +7 #7天以前的文件-delete #直接删除(安全高效) |
正式加定时任务前,先手动执行一遍,看看会删哪些,以确保数据安全。
1 | find /data -name "*.log" -mtime +7 |
3、可直接放进 crontab 的删日志任务
每天凌晨2点清理 /data 下7天前日志
1 | 0 2 * * * find /data -name "*.log" -mtime +7 -delete |
六、高频示例(特殊用途)
每月最后一天执行脚本
1 | #每月最后一天 23:59 执行(通过日期判断实现) |
确保同一时间只有一个脚本运行(flock)
1 | #加锁执行,脚本未结束则新任务直接退出 |
不规则时间(如90分钟,用两组定时任务)
1 | #规则1:0、3、6、9、12、15、18、21 点整执行 |
两个规则组合后,执行时间就是:0:00 → 1:30 → 3:00 → 4:30 → 6:00 → …,刚好间隔 90 分钟。
七、日常注意事项
1.脚本没有执行权限
1 | chmod +x test.sh #增加脚本执行权限 |
2.命令/路径不写绝对路径
不要写 sh test.sh,要写 ``/bin/sh /root/test.sh
3.环境配置
crontab 环境极简,脚本里尽量用全路径。
\**\*\*\*\*\*\*八、定时任务不执行?\*\*\*\*\*\**\*
\**\*\*\*\* \*\*\*\*\**
看任务是否存在:
crontab -l看服务是否运行:
systemctl status crond看日志定位问题:
tail -f /var/log/croncrontab没有当前时间的概念,每隔一小时执行一次,应该这样写
1
0 */2 * * * #每2小时的整点执行一次
1
* */2 * * * #每两个小时间隔内,每分钟执行一次 ,这个很多书上都是错误的。



