-
手动好用 cron 却出空备份:定时任务避坑全复盘
一次例行回滚演练,我胸有成竹去拿前一晚的备份,打开目录却整个人凉了:最近好几天的备份文件全是 0 字节空壳,而这段时间监控没有一条告警,cron 的退出码忠实地记录着"成功"。第一反应是脚本坏了,可拷到终端手动一跑,几百兆数据稳稳生成——同一个脚本,我手动跑就好,cron 跑就出空文件。盯着 crontab 看了半天才回过味:问题不在脚本逻辑,而在 cron 把它丢进了一个和登…- 0
- 0
-
定时任务可靠性完全指南:从一次"任务跑成三份、还挂了一周没人知道"看懂防重叠、多实例单跑与可观测
2023 年我做一个后端服务有一堆需要定时跑的活儿每天凌晨生成报表每小时同步一次外部数据每隔几分钟清理过期数据。定时任务这件事我压根没多想。第一版我做得很省事定时任务不就是写个 cron 表达式到点了调一下那个函数用 APScheduler 之类的库挂一个 scheduled_job 函数体里该干嘛干嘛。本地开发时真不错我把触发间隔调短到一分钟盯着日志到点函数就跑跑完就停准得很。我心里很踏实定时任…- 2
- 0
-
手动能跑 crontab 跑出来却是空的:一次 cron 运行环境的复盘
一个数据库备份脚本 backup.sh 我手动 bash 跑完全正常生成几百 MB 的备份文件,挂进 crontab 每天凌晨 2 点自动跑,跑出来的备份文件却是 0 字节空的,脚本一个字没改手动对 cron 错。排查梳理:grep CROND /var/log/cron 确认 cron 确实在 2 点执行了任务,在 crontab 行尾加 > /tmp/x.log 2>&1 …- 0
- 0
-
手敲能跑脚本里却 command not found:一次 Linux PATH 与 shell 环境的排查复盘
写了个部署脚本里有一行 node build.js,手动一行行执行 node 跑得好好的,挂进 crontab 自动跑就报 deploy.sh: line 8: node: command not found。可手敲 node -v 清清楚楚回 v18.16.0,which node 也指出它在 /root/.nvm 下。同一台机器同一个 node,我能用 cron 不能用。排查梳理:shell …- 0
- 0
-
同一个备份脚本跑了 6 个:一次 cron 任务重叠与 flock 文件锁的复盘
一台备份服务器磁盘 IO 被打满、load 飙到几十,ps 一看同一个 backup.sh 居然有 6 个进程同时在跑。没人手动重复执行,脚本只在 crontab 里每 10 分钟一次。time 一量单次耗时 43 分钟——调度周期 10 分钟、单次 43 分钟,必然越堆越多。排查梳理:cron 是无条件按点触发的闹钟,到点就启动一个新任务实例,从不检查上一次跑完没,一旦单次耗时大于调度周期任务实…- 0
- 0
-
脚本手动跑正常 cron 里就不执行:一次 Linux 定时任务排查复盘
一个备份脚本在命令行手动跑每次都成功,放进 crontab 设凌晨 2 点执行却连续几天没产出,而 crond 服务正常 crontab 配置也在。排查梳理:cron 排查第一步是看 /var/log/cron 分清任务是根本没触发还是触发了但脚本跑挂了;cron 执行脚本的 stdout 和 stderr 默认会被丢弃,任务必须加重定向否则永远看不到报错;cron 执行任务不是登录 shell,…- 0
- 0
-
cron 配置都对脚本却不执行:一次 Linux 定时任务环境排查复盘
一个数据库备份脚本手动跑完全正常,挂进 crontab 后半个月一个备份都没产出,可 crontab 配置在、时间没写错、crond 服务也活着。排查梳理:cron 不是替你敲命令,它在一个自己准备的极简环境里执行脚本,和你登录终端的环境是两个世界;最致命的差异是 PATH,cron 的 PATH 极简通常只有 /usr/bin:/bin,装在 /usr/local/bin 的命令直接 comma…- 2
- 0
-
脚本手动跑没问题,放进 cron 就不执行:一次 Linux 定时任务排查复盘
一个备份脚本手动执行 100% 成功,写进 crontab 后一周一个备份都没生成,还没有任何报错。排查梳理:cron 跑脚本给的是一个极简环境,不加载 /etc/profile 和 ~/.bashrc,PATH 短、无自定义环境变量、工作目录是家目录;命令找不到是 PATH 问题、文件找不到是工作目录问题,都该用绝对路径;grep CRON /var/log/cron 分清没执行还是执行了失败;…- 2
- 0
-
手动能跑放进 crontab 就失踪:一次 Linux 定时任务排查复盘
一个数据库备份脚本手动跑百分百正常,放进 crontab 设凌晨 3 点跑,一周后备份目录空空如也、一次都没成功。排查梳理:cron 准时启动了脚本却第一条命令就失败、cron 执行环境极简不加载 .bashrc、PATH 只有 /usr/bin:/bin、命令必须用绝对路径、任务输出要重定向收集否则被当邮件石沉大海、/var/log/cron 看有没有触发、env -i 裸环境自测、% 转义与时…- 0
- 0
-
cron 手动跑没问题定时就不跑:一次 Linux 定时任务排查复盘
备份脚本手动执行完全正常,交给 cron 定时跑却次次失败、还悄无声息。排查梳理:crontab 五个字段、cron 执行环境与登录终端的天壤之别、任务输出默认发邮件要重定向到日志、用 /var/log/cron 分清触发与否、flock 防任务重叠,以及一套定时任务排查纪律。- 8
- 0
cron
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!










