Linux 定时任务 cron 自动化:语法、排错与最佳实践
【摘要】 面向自动化运维,详解 cron 六字段语法、常见坑与最佳实践,覆盖错峰、幂等、日志与故障定位。cron 是最古老的自动化,但也是坑最多的——一个字段写错,任务要么不跑要么跑几十次。本文把语法和排错一次讲清。语法(六字段): 秒 分 时 日 月 周。经典示例:0 0 6 * * * # 每天 06:00:00*/30 * * * * # 每 30 分钟0 9 1,15 * * # 每月...
面向自动化运维,详解 cron 六字段语法、常见坑与最佳实践,覆盖错峰、幂等、日志与故障定位。
cron 是最古老的自动化,但也是坑最多的——一个字段写错,任务要么不跑要么跑几十次。本文把语法和排错一次讲清。
语法(六字段): 秒 分 时 日 月 周。经典示例:
0 0 6 * * * # 每天 06:00:00
*/30 * * * * # 每 30 分钟
0 9 1,15 * * # 每月 1 号、15 号 09:00
注意:POSIX cron 是「分 时 日 月 周」五字段,但青龙面板这类面板是六字段(多了秒)。面板迁移任务时必须核对字段数,错一个整条错位。
排错三步:
- 任务不跑:先看「时区」。面板/系统的时区不一致,任务在「错误的 06:00」跑了。
date比对一下。 - 跑了但没效果:cron 的
PATH极简,脚本里用到的python/node/curl可能找不到。在 crontab 顶部export PATH=...或脚本里写绝对路径。 - 没有日志:cron 默认丢弃 stdout。要么
>/var/log/x.log 2>&1,要么面板自带日志面板(青龙就有)。
最佳实践:
- 错峰:多任务别扎堆整点,0 分/1 分/2 分错开,或加随机偏移,避免打爆下游(尤其薅羊毛类签到,扎堆极易风控)。
- 幂等:任务重跑必须安全(前面 13 讲过),
flock或状态文件防并发叠加。 - 可观测:每步留痕 + 失败告警(发企微/邮件),别等 3 天后才发现它跑挂了。
- 静默失败可接受,显式失败要告警:区分「跳过(正常)」和「崩了(要修)」。
一条血泪经验:cron 任务出问题,90% 是「时区 + PATH + 没有日志」三件事之一。把这三点做扎实,定时任务就不会半夜静默翻车。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)