Cron Parser

*
分钟
*
小时
*
*
*
星期
快速构建
常用模板

老服务器为何五域?

内网批处理、日志切割、备份脚本与系统级与用户级定时表,传统上都是五域:分、时、日、月、周,没有秒级粒度,一切按机器本地时区或显式设置的环境变量时区解释。检索「linux crontab 五段」「cron 每分钟」「cron 日志 不执行」「flock 防重」的人,常在排查「脚本手动能跑、定时却不跑」或「两台机器各跑一遍」。把五域翻成人话,能立刻看出是「每小时」还是「每五分钟步长」,避免把步长星号误读成「每五天」。与运维对窗口时,还要分清系统表与用户表、以及邮件通知与重定向是否把错误吞掉;人话对齐后仍应在目标机列出当前生效条目,并与 systemd 定时器或 anacron 并存关系核实,防止你以为改的是真正生效那一份。把「机器时区文件是否被容器继承」写进检查表,能堵住大量「差整点」的玄学工单。再把「日志轮转与备份任务是否共用同一磁盘」写进风险评估,避免人话对齐了时间却撞上输入输出排队。把「是否启用邮件告警」也勾进检查表,少一次静默失败。

如何在值班交接中读懂五域 crontab 并与脚本锁、邮件告警与系统时区配置交叉核对

  1. 确认条目来自 `/etc/crontab`、用户 crontab 还是 `/etc/cron.d` 片段文件;不同文件语法细节略有差异,粘贴解析前注明来源,避免把用户名列当成时间域。
  2. 把人话里的触发时刻与 `syslog` 或 `journalctl` 中实际执行时间对比,若偏移固定一小时先查系统时区与夏令时文件而非改表达式;若完全无日志,检查是否被 `flock` 跳过或命令路径依赖登录环境。
  3. 在预发或同版本镜像上安装同一条目空跑脚本,确认权限与解释器路径;变更单附上「解析人话 + 连续三次计划触发」截图,生产修改仍须走双人复核。

crontab 常见问题

条目里写了 `@yearly` 这类宏别名,和人话里按五域展开的结果对不上,这种混用体系该怎么在文档里禁止新人混贴?
应在运维手册列出「允许宏集合」并说明宏与五域不可在同一条随意拼接;解析时若检测到宏,先展开再生成人话。培训里用反例展示「宏加五域后半段被忽略」的事故截图,比口头说别乱写更有效。
脚本在 shell 手动执行正常,crontab 触发却找不到命令或找不到虚拟环境,这种环境变量差异用人话能看出吗、排障第一步写什么?
人话看不出环境差异;应在 crontab 内显式写 `PATH` 与绝对路径,并在脚本 shebang 固定解释器版本。值班手册把「最小 PATH 模板」贴成可复制块,减少凌晨盲试。
两台负载均衡机器各有一份 crontab,导致同一报表生成两次,这种重复调度除了改表达式还能用什么治理手段配合人话评审?
应迁移到集中调度或选举主节点执行,并在 crontab 外包一层分布式锁;评审时用人话确认「同一自然分钟只会触发一次」在两台机器上仍成立。仅靠口头约定「只配一台」会在扩容时被遗忘。
运维把 `%` 写在命令里被 cron 当成换行续写导致静默失败,这类转义坑在交接文档里该怎么用一条醒目标题提醒读五域之外还要看命令体?
应在规范里要求「复杂命令一律封装脚本文件」,禁止在 crontab 行内写长管道;若必须内联,附官方 percent 转义说明链接。人话评审 checklist 单列「命令体百分号检查」一项。
容器里不再用 crond 而用 Kubernetes CronJob,可业务仍习惯口头叫「crontab」,这种术语混用怎么在跨团队会议里对齐以免配错入口?
应在会议纪要首次出现时写明「物理五域 crontab」或「编排侧 CronJob」并附链接到对应控制台截图;人话解析选对方言。不要用「定时」一词概括所有实现,避免配错层。
More versions