Linux 定时任务 crontab 入门:写法、示例与排错
引言
备份、日志切割、证书续期、数据同步——服务器上一切周期性工作都靠 crontab。它是运维最常用也最容易踩坑的功能。
一、五个字段与常用示例
格式:分 时 日 月 周 加命令。0 3 * * * 每天凌晨 3 点;*/10 * * * * 每 10 分钟;0 4 * * 1 每周一凌晨 4 点。命令写绝对路径是好习惯:/usr/local/bin/backup.sh 而不是裸命令名。
二、三个经典坑
① 环境变量不同:cron 的 PATH 极简,命令行能跑的任务在 cron 里找不到命令——脚本里用绝对路径或自己 export PATH;② 百分号被解释:命令里的 % 在 crontab 中是换行符,要用反斜杠转义;③ 输出没人收:任务报错你永远看不到——末尾加重定向把输出落日志,配告警盯日志。
三、不执行的排查顺序
① crontab -l 确认任务在(注意改的是 root 还是用户的);② 确认 crond 服务在跑;③ 看日志:/var/log/cron 有每次触发的记录;④ 手动用与 cron 相同的环境跑一遍。四步之内基本能定位。
总结
crontab 三原则:绝对路径、输出落日志、高频任务加锁(flock 防止上一轮没跑完下一轮又起)。把这三条变成习惯,定时任务的可靠性上一个台阶。