Cron 定时任务速记:五字段格式、常用周期与日志排查
在 Linux 上让脚本按时自己跑,靠的是 cron。第一次配的时候最容易错两件事:五字段的顺序记反、脚本手动跑没问题但进了 crontab 就失败。本文把格式、常用写法和排查顺序整理成速记,配之前对照一遍。
五字段格式
一行 crontab 分六部分,前面五个是时间,最后是命令:
分 时 日 月 周 命令
- 分:0-59
- 时:0-23
- 日:1-31
- 月:1-12
- 周:0-7,其中 0 和 7 都是周日
每个字段支持四种写法:* 表示任意,*/n 表示每隔 n,a-b 表示范围,a,b,c 表示枚举。比如 0 3 * * * 是每天凌晨 3 点整,*/15 * * * * 是每 15 分钟一次,30 8 * * 1-5 是工作日 8 点 30 分。
容易踩的点:日和周是“或”的关系,两边都限制时满足任意一边就会触发,想表达“每月 1 号且是周一”不能直接靠这两个字段实现。
常用操作
crontab -e # 编辑当前用户的定时任务
crontab -l # 查看已配置的任务
crontab -r # 删除全部任务(慎用)
systemctl status cron # Debian/Ubuntu 看服务状态
systemctl status crond # RHEL/CentOS 系
系统级的任务还可以放在 /etc/crontab 和 /etc/cron.d/ 目录里,前者格式多一个“以哪个用户执行”的字段,别和用户 crontab 混用。
还有简写
记不住字段时可以用特殊字符串:@daily 每天零点,@weekly 每周日零点,@monthly 每月 1 号零点,@reboot 开机时执行一次。精度要求不高的任务用简写更不易写错。
进了 crontab 就失败,先查这四处
一是环境变量。cron 的环境非常干净,没有交互终端里的 PATH 和自定义变量,脚本里用到的命令尽量写绝对路径,或者在 crontab 顶部先声明 PATH。二是工作目录,cron 默认在用户主目录执行,脚本里用相对路径读文件多半会找不到。三是权限,脚本本身要有可执行权限。四是输出去向,cron 默认把输出发邮件,本机没配邮件服务时就无声无息,建议统一重定向到日志:
0 3 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
有了日志,失败时先看日志末尾,再手动以同样环境跑一遍,多数问题能当场定位。
小结
cron 的规则本身不复杂:格式记牢五字段,脚本写绝对路径,输出留日志。做到这三点,定时任务基本能一次配对、长期稳定运行。
- 点赞
- 收藏
- 关注作者
评论(0)