Linux Crontab五段格式
Linux Crontab默认不包含秒字段。一条标准表达式从分钟开始,系统在满足条件的分钟运行命令。
分 时 日 月 周
*/5 * * * * # 每5分钟 | 字段 | 范围 | 说明 |
|---|---|---|
| 分钟 | 0–59 | 任务在小时内的第几分钟执行 |
| 小时 | 0–23 | 使用服务器本地时区 |
| 日期 | 1–31 | 需要注意月份实际天数 |
| 月份 | 1–12或JAN–DEC | 可使用数字或英文缩写 |
| 星期 | 0–7或SUN–SAT | 0和7通常都代表星期日 |
Linux Crontab不使用Quartz的问号、W和#。如果目标系统是Linux,请在工具顶部明确选择“Linux”。
日期与星期的匹配逻辑
当日期和星期都不是星号时,传统Crontab通常采用“任一条件满足即可执行”的逻辑,而不是两者必须同时满足。例如 0 9 1 * 1 可能在每月1日以及每个星期一上午9点执行。
如果业务要求“每月1日且恰好是星期一才执行”,不要仅凭表达式猜测,应在脚本中增加日期判断,或使用支持明确逻辑的调度框架。
Crontab常用表达式
| 表达式 | 含义 | 在线验证 |
|---|---|---|
*/5 * * * * | 每5分钟 | 验证 |
0 2 * * * | 每天凌晨2点 | 验证 |
0 9 * * 1-5 | 工作日上午9点 | 验证 |
*/15 9-17 * * 1-5 | 工作日9至17点每15分钟 | 验证 |
0 0 1 * * | 每月1日0点 | 验证 |
服务器使用建议
- 使用
crontab -l检查当前用户的任务,不要混淆root与普通用户。 - 命令和脚本使用绝对路径,因为Cron环境变量通常少于交互式终端。
- 明确服务器时区;容器、宿主机和业务时区可能不同。
- 把标准输出和错误输出写入日志,并设置轮转策略。
- 避免任务重叠,可使用文件锁、数据库锁或专门的分布式任务平台。
- 重要任务应增加心跳或结果监控,表达式正确并不代表任务一定执行成功。