Loading...
Loading...
免费的在线 Cron 表达式生成器,构建、预览和验证用于 DevOps、备份和自动化的调度任务。支持预设和下次执行时间。
Every 5 minutes
预设:
下次执行时间:
Cron 表达式是一个由五个字段组成的字符串,用于在 Unix 类操作系统中定义基于时间的任务调度。每个字段代表一个特定的时间单位:分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)和星期(0-7,0 和 7 都表示星期日)。任何一个字段中的星号(*)表示该时间单位的「每一个可能的值」。
Cron 任务是服务器自动化的基石。它们负责从日志轮转、临时目录清理到数据库备份、定时邮件发送和 CI/CD 流水线触发等一切操作。几乎每个生产系统都依赖 cron 来执行那些必须无需人工干预的例行维护任务。
语法初看可能有些晦涩,但它遵循一致的逻辑。例如,表达式 0 5 * * * 表示每天凌晨 5:00 运行任务。*/15 * * * * 表示每 15 分钟运行一次。更复杂的调度需要组合多个字段:0 9 * * 1-5 表示每个工作日上午 9 点,而 0 0 1 * * 表示每月第一天的午夜。
除了基本的五字段语法外,某些 cron 实现支持扩展语法如 @yearly、@monthly、@weekly、@daily、@hourly 和 @reboot。但这些并非在所有系统间可移植。标准的五字段格式在任何地方都适用,也是此生成器生成的格式。
一个常见的陷阱是时区处理。Cron 使用服务器的系统时区,这可能与你的本地时区不同。如果你将任务安排在午夜,但服务器使用 UTC 而你在 UTC+8,任务将在你的当地时间早上 8 点运行。在设置 cron 任务时务必验证服务器的时区。
另一个重要的考虑因素是执行重叠。如果一个 cron 任务耗时超过其间隔(例如一个每小时运行但耗时 70 分钟的备份),第二个实例将在第一个完成之前启动。使用文件锁或任务协调工具(如 flock)来防止冲突。
*/5 的意思是「每 5 个单位」。在分钟字段中,*/5 表示任务每 5 分钟运行一次——在 :00、:05、:10 等时刻执行。这称为步进值,适用于五个字段中的任意一个。
使用表达式 0 9 * * 1-5。表示分钟 0,小时 9,任意日期,任意月份,周一至周五(1-5)。使用 1-5 表示工作日在不同 cron 实现中更可移植。
常见原因包括:(1)字段之间缺少或多余空格——必须是恰好 5 个字段由单个空格分隔,(2)星期日使用 7——在大多数实现中 0 和 7 都表示星期日,(3)忘记 cron 使用服务器的时区,(4)执行 cron 的用户没有必要的权限。
标准 cron 无法以低于每分钟的频率运行任务。对于亚分钟间隔,可以在脚本中使用循环加 sleep,或使用支持秒级精度的 systemd timer。
Cron 是执行调度任务的系统守护进程。Crontab 是定义调度的文件格式。Cron job 是由 crontab 文件中一行定义的一个调度任务。