Cron 表达式生成器
这是什么:定时任务:让服务器在你设定的时间(比如每天凌晨)自动执行命令,不用人工盯着。
什么时候用:需要定时备份、定时清理、定时跑脚本时,用 cron 表达式描述"什么时候执行"。
0-59
0-23
1-31
1-12
0-6(0=周日)
这条表达式的意思
未来 5 次执行时间(本地时区)
全部在你的浏览器本地计算,不上传任何数据。
生成之后,把它放到哪里?
Cron 表达式只描述"什么时候",真正执行的是一条命令。把两者拼成一行,放进对应系统的定时任务即可。下面的示例会随上方表达式实时更新。
1 Linux / macOS:crontab(最常用)
在服务器上定时跑脚本就用它。先填你要执行的命令,得到"表达式 + 命令"这一整行:
- 1. 终端执行
crontab -e,打开当前用户的定时任务 - 2. 把上面这一整行粘进去
- 3. 保存退出(vim 里按
Esc,输入:wq回车) - 4. 用
crontab -l查看已添加的任务
/usr/bin/python3);建议把输出写进日志便于排查,在命令末尾加 >> /var/log/mytask.log 2>&1。2 系统级:/etc/cron.d(多一个"用户"字段)
写进 /etc/crontab 或 /etc/cron.d/ 下的文件时,要比用户 crontab 多一个"以哪个用户运行"的字段(需要 root):
3 Windows:没有 cron,用「任务计划程序」
Windows 不支持 cron 语法,三种等价做法:
- • 图形界面:开始菜单搜索「任务计划程序 / Task Scheduler」,新建任务并设定触发时间。
- • 命令行 schtasks,例如"每天 03:00 运行":
schtasks /create /tn "MyTask" /tr "C:\path\script.bat" /sc daily /st 03:00 • 或安装 WSL(Windows 里的 Linux),就能直接用上面的 crontab。
注意:schtasks 用自己的参数(/sc daily、/sc hourly…),不吃 cron 表达式;复杂调度建议用 WSL + crontab。
4 在代码或 CI 里(直接复用这条表达式)
很多框架直接接受 cron 表达式,把上方生成的表达式粘进去即可:
Node.js(node-cron)
cron.schedule('', () => { /* 你的任务 */ }) Python(APScheduler)
CronTrigger.from_crontab('') Spring(注意是 6 位,秒在最前,已自动补 0)
@Scheduled(cron = "") GitHub Actions
on:
schedule:
- cron: '' Kubernetes CronJob
schedule: "" 常见 Cron 表达式示例
点击任意一行即可填入上方工具查看解释与执行时间。
| 表达式 | 含义 |
|---|---|
| */5 * * * * | 每 5 分钟执行一次 |
| 0 * * * * | 每小时整点执行 |
| 0 0 * * * | 每天凌晨 0 点执行 |
| 0 3 * * * | 每天凌晨 3 点执行(常用于备份) |
| 0 9 * * 1 | 每周一上午 9 点执行 |
| 0 0 1 * * | 每月 1 号 0 点执行 |
| 0 18 * * 1-5 | 工作日(周一至周五)18 点执行 |
| 30 2 * * 0 | 每周日凌晨 2:30 执行 |
常见问题
Cron 表达式的五个字段分别是什么?
从左到右依次是:分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)、星期(0-6,0 表示周日)。字段之间用空格分隔。
crontab 里 * 和 */5 有什么区别?
* 表示"每一个"(如分钟位的 * 表示每分钟);*/5 表示"每隔 5 个单位"(如分钟位的 */5 表示每 5 分钟)。
星期字段 0 和 7 都表示周日吗?
在多数实现中 0 表示周日;部分实现也接受 7 表示周日。为兼容性建议统一用 0。
AI 给我的 cron 表达式怎么确认对不对?
把它粘贴到上面的输入框,页面会立即给出中文解释和未来 5 次执行时间——一眼就能核对是否符合预期,不用担心 AI 幻觉。