Cron 定时任务速记:五字段格式、常用周期与日志排查

举报
yd_241044277 发表于 2026/11/02 08:43:58 2026/11/02
【摘要】 在 Linux 上让脚本按时自己跑,靠的是 cron。第一次配的时候最容易错两件事:五字段的顺序记反、脚本手动跑没问题但进了 crontab 就失败。本文把格式、常用写法和排查顺序整理成速记,配之前对照一遍。 五字段格式一行 crontab 分六部分,前面五个是时间,最后是命令:分 时 日 月 周 命令分:0-59时:0-23日:1-31月:1-12周:0-7,其中 0 和 7 都是周日每...

在 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 的规则本身不复杂:格式记牢五字段,脚本写绝对路径,输出留日志。做到这三点,定时任务基本能一次配对、长期稳定运行。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。