标准 cron 不支持秒级精度,其最小调度单位为分钟,无“秒”字段;需改用 sleep 循环、systemd timer 或 supercronic 等替代方案。

标准 cron 不支持秒级精度,别被“每秒执行”误导
Linux 原生 crond 最小粒度是分钟,* * * * * 里根本没有“秒”字段。你看到的 0/2 * * * * ? 这类带问号、秒数的表达式,属于 Quartz(Java 生态)或某些前端生成器的扩展语法,不能直接扔进系统 crontab 里跑。强行粘贴会静默失败,任务根本不会触发。
如果你真需要秒级调度,得换方案:
– 用 sleep 1 && your-command 在 shell 脚本里手动循环
– 改用 systemd timer(支持 OnUnitActiveSec=1s)
– 或引入外部工具如 supercronic(兼容秒级,但需额外部署)
HTML 前端生成器的核心逻辑其实是字符串拼接
一个可用的 HTML cron 生成器,本质是把用户勾选/输入的值,映射成 5 字段(分、时、日、月、周)的合法字符串。不需要后端,纯前端就能做。关键点在于:
- 周几字段:Linux cron 中
0和7都表示周日,但部分 UI 会默认用sun/mon,提交前必须转成数字(0-6),否则crontab -e会报错bad day-of-week - 日期和月份不能同时用
*和具体数字:比如30 10 1 * 1表示“每月 1 号且是周一”,但若当天不是周一,该行不会执行——这是常见误解,UI 上最好加提示 - 避免生成
*/0或负数:用户手输时可能误填,JS 校验要拦截if (step === 0)并提示“步长不能为 0”
生成的表达式要能直接复制进 crontab -e
用户最常卡在“复制完不生效”。除了语法正确,还得注意三件事:
立即学习“前端免费学习笔记(深入)”;
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
– 每行结尾不能有多余空格或不可见字符(\u200b 等零宽空格),建议生成后用 .trim() 处理
– 路径必须写绝对路径:/usr/bin/curl 不能简写为 curl,因为 crond 的 $PATH 很窄
– 命令里的 % 符号要转义成 \%,否则会被 cron 当作注释截断
一个安全的生成示例:0 2 * * 0 /bin/sh /home/user/backup.sh > /dev/null 2>&1
在线工具容易忽略时区和系统时间差异
你在网页上选“每天 9:00”,生成 0 9 * * *,但实际执行时间取决于服务器本地时区。如果服务器在 UTC+0,而你在北京,那它其实在北京时间 17:00 执行。
排查方法很简单:
– 运行 date 看服务器当前时间
– 运行 cat /etc/timezone 或 timedatectl 确认时区
– 如果必须按东八区跑,要么改服务器时区,要么在 crontab 前加环境变量:0 1 * * * TZ=Asia/Shanghai /path/to/cmd
这个细节几乎每个第一次部署定时任务的人都会踩一次。


















