-
我那个每天凌晨两点的定时任务,上了容器后变成了上午十点跑,日志时间也全差了八小时,只因容器里的时区是 UTC:一次容器时区不一致的深度复盘
我有个定时任务配的是每天凌晨 2 点执行(挑业务低谷),本地和物理机一直好好的。上了容器(K8s)后运维发现它居然在上午 10 点左右跑(正好业务高峰),而且容器日志时间戳全比实际慢了 8 小时。进容器 date 一看才明白:多数基础镜像默认时区是 UTC,不是东八区——我配的凌晨 2 点被容器当成了 UTC 02:00 也就是北京时间上午 10 点,now()/日志取的也是 UTC 时间慢 8 …- 0
- 0
-
对账邮件发了三遍:多实例定时任务避坑复盘
那天上午客服转来一条用户投诉让我心里咯噔一下:你们的对账邮件我今天早上一口气收到了三封一模一样,是不是系统出 bug 了?我第一反应是邮件服务重试了?可一查发邮件的代码确确实实只被成功调用了三次,每次都正大光明地发了一封,不是重试是实打实地执行了三遍。而这个发对账邮件的任务是一个每天凌晨定时跑一次的定时任务,逻辑里清清楚楚写着每个用户发一封,怎么会发三封?真相藏在一个我们为了高可用而做的本身完全正…- 0
- 0
-
手动好用 cron 却出空备份:定时任务避坑全复盘
一次例行回滚演练,我胸有成竹去拿前一晚的备份,打开目录却整个人凉了:最近好几天的备份文件全是 0 字节空壳,而这段时间监控没有一条告警,cron 的退出码忠实地记录着"成功"。第一反应是脚本坏了,可拷到终端手动一跑,几百兆数据稳稳生成——同一个脚本,我手动跑就好,cron 跑就出空文件。盯着 crontab 看了半天才回过味:问题不在脚本逻辑,而在 cron 把它丢进了一个和登…- 0
- 0
-
一次 Python 字典在循环里加 key 引发 RuntimeError 的复盘:4 种修法 + 性能基准
会员中心定时任务凌晨 3 点抛 RuntimeError: dictionary changed size during iteration,改成 list(d) 后又漏了 4.2 万条数据。本文复盘 6 小时排查 + 72 小时漏数,讲清 4 种修法的性能 / 安全 / 适用场景,附决策树和团队事后立的 4 条规矩。- 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
-
定时任务手动能跑 cron 里不执行:一次 Linux crontab 环境排查复盘
给一个备份脚本配了每天凌晨 3 点的 crontab,手动跑必成功,cron 跑必失败,同一个脚本同一台机器结果天差地别。排查梳理:手动能跑不等于 cron 能跑,cron 给任务的运行环境和你登录终端的环境是两个不同的世界;排查定时任务先看 /var/log/cron,有 CMD 记录是触发了任务失败、没记录是根本没触发;cron 任务的输出默认发本地邮件没人看,务必加 >> log…- 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
-
三个月备份全部落空:一次 Linux crontab 定时任务排查复盘
配好的每日备份任务三个月一次没成功,crontab -l 却明明能看到。排查梳理:cron 体系与用户级/系统级任务、crontab 五个时间字段、cron 极简环境为何让命令找不到、给任务重定向日志让失败可见、调试不工作的 cron 任务,以及一套定时任务管理纪律。- 5
- 0
-
定时任务明明配了却不执行:一次 Linux crontab 排查复盘
每天凌晨的备份脚本连着几天没产出,crontab 里那条任务明明在、语法也对,手动执行一切正常,一交给 cron 就哑火。排查梳理:看懂五个时间字段、给任务加 2>&1 抓报错、cron 环境极其精简 PATH 很短、相对路径与工作目录陷阱、flock 防重叠、systemd timer。- 2
- 0
定时任务
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!














