把定时任务写清楚

Cron表达式生成器

每5分钟执行一次、每天凌晨备份、每周定时清理日志——选好执行规则,就能生成Linux crontab表达式。支持直接粘贴校验,并按UTC预览未来5次执行时间。

CRON表达式Linux标准 · 5字段
*/5分钟
*小时
*日期
*月份
*星期

每5分钟 / UTC

01

设置执行规则

修改后即时更新
步长
不限 *
不限 *
不限 *
不限 *

步长在每个字段内重新计数。日期和星期均有限制时,满足其中一个即可。

计算在浏览器内完成,不上传表达式。无需注册,即开即用。

常用Cron表达式,直接对照

*/5 * * * *

每5分钟执行一次

30 2 * * *

每天02:30执行

0 9 * * 1-5

周一至周五09:00执行

Linux crontab表达式怎么写?

Linux cron按时间规则执行命令。一条用户crontab记录由五个时间字段和后面的命令组成:前者决定什么时候运行,后者决定运行什么。Cron表达式本身不包含脚本路径,也不会创建任务。

配置数据库备份、定时同步或日志清理时,先确定频率,再检查具体执行时刻,比只看一串星号更容易发现错误。本工具针对Linux常用的五字段格式,不能直接拿来生成Java Quartz所需的六字段或七字段表达式。

从执行需求生成定时规则

  1. 先选常用规则,例如“每5分钟”,再调整分钟、小时等字段。
  2. 需要多个时刻时选择“范围或列表”;已有表达式可直接粘贴到“编辑表达式”。
  3. 核对未来5次执行时间。周一至周五的规则不会识别法定节假日或调休。
  4. 复制结果,在服务器crontab中补上要执行的命令。

五个字段与特殊符号

从左到右依次是分钟、小时、日期、月份、星期,字段之间用空格分隔。星期日可以写0或7。月份和星期可使用JAN–DECSUN–SAT;代码中的数字和符号请使用半角字符。

字段取值
分钟059
小时023
日期131
月份112
星期07
  • *:该字段的所有值
  • 逗号:指定多个值,例如0,30
  • 短横线:包含两端的范围,例如1-5
  • 斜线:在字段范围内按步长取值,例如*/15

每5分钟、每天、每周的Cron写法

*/5匹配每小时的第0、5、10分钟等时刻,并不是从保存任务的那一刻起倒计时5分钟。下面的09:00均指调度器所在时区。

表达式执行规则
*/5 * * * *每5分钟执行一次
30 2 * * *每天02:30执行
0 9 * * 1-5周一至周五09:00执行
0 0 * * 0每周日零点执行
0 0 1 * *每月1日零点执行
0 0 29 2 *闰年2月29日零点执行

把表达式加入服务器定时任务

运行crontab -e编辑当前用户的任务。下面的记录每天02:30调用一次备份脚本,时间以服务器调度器的设置为准。

建议使用绝对路径,并检查脚本权限与cron服务状态。网页上的预览只验证日历规则,不代表脚本已经安装或成功执行。

30 2 * * * /usr/local/bin/backup.sh

Cron表达式常见问题

为什么复制六位表达式会报错?

不同调度器的格式不相同。本工具只接受Linux五字段格式,不支持秒字段、Quartz的?、L、W、#以及@reboot@hourly@daily@weekly@monthly@yearly可转换为五字段。

日期和星期同时指定,是“且”还是“或”?

两者都被限制时按“或”匹配。例如0 9 1 * MON表示每月1日或每周一09:00执行。如果其中一个字段以*开头,包括*/2,则需要同时满足两个日期字段。

预览时间为什么和北京时间不一样?

预览固定使用UTC,不会自动切换成北京时间。表达式不包含时区,实际运行采用调度器配置;部署前应核对服务器时区。

语法正确为什么没有执行时间?

例如2月31日并不存在,语法合法也可能没有匹配日期。预览最多搜索未来8年,闰日任务可能只能列出少于5次结果。

这个工具会替我运行任务吗?

不会。表达式生成和时间计算都在浏览器本地完成,仍需自行把规则和命令部署到调度器。

Cronie官方crontab语法说明(英文)