DevBox

Cron 是什么?一文讲清 crontab 与表达式格式

DevBox 团队 · 最后更新 2026-07-01

想直接生成?试试 Cron 表达式生成器 —— 填参数即出结果。 打开工具 →

Cron 是什么

Cron 是 Linux、macOS 等类 Unix 系统上负责定时执行任务的后台服务。你只要告诉它”什么时候、执行什么命令”,它就会在指定时间自动运行,无需人工盯着。常见用途:每天凌晨自动备份数据库、每小时清理临时文件、每分钟检查服务状态等。

crontab:cron 的配置

cron 读取的配置叫 crontab(cron table 的缩写)。同时,crontab 也是管理这份配置的命令:

  • crontab -e:编辑当前用户的定时任务
  • crontab -l:查看已有的定时任务
  • crontab -r:删除全部任务(小心使用)

crontab 里的每一行 = 一条 cron 表达式 + 要执行的命令,例如:

0 3 * * * /usr/bin/backup.sh

意思是:每天凌晨 3 点执行 /usr/bin/backup.sh。前面的 0 3 * * * 就是 cron 表达式,负责描述”什么时候”。

cron 表达式的五个字段

一条标准 cron 表达式由 5 个字段组成,用空格分隔,从左到右依次是:

位置字段取值范围说明
1分钟0-59第几分钟
2小时0-23第几点(24 小时制)
31-31每月第几天
41-12第几月
5星期0-6周几(0 = 周日)

例如 30 8 * * 1 表示:每周一的 8 点 30 分

特殊字符含义

每个字段里可以用这些符号组合出灵活的时间规则:

符号含义例子
*每一个(任意值)分钟位 * = 每分钟
,枚举多个值小时位 9,18 = 9 点和 18 点
-连续区间星期位 1-5 = 周一到周五
/每隔多少分钟位 */5 = 每 5 分钟

组合示例:*/10 9-18 * * 1-5 表示工作日的 9 点到 18 点之间,每 10 分钟执行一次

常见误区

  • 分不清”日”和”星期”:两者都设置了具体值时,多数系统是”满足其一即执行”,容易超出预期。日常只用其中一个即可。
  • 忘了命令要用绝对路径:cron 运行环境的 PATH 很精简,pythonnode 等最好写成完整路径。
  • 把秒也写进去:标准 cron 没有秒;需要秒级请用 6 位格式的实现(如 Quartz)。

下一步

看懂了格式,接着可以:

常见问题

cron 和 crontab 有什么区别?

cron 是系统里负责"定时执行"的后台服务(守护进程);crontab 是它读取的配置文件,也是编辑该文件的命令(crontab -e)。你写的定时规则保存在 crontab 里,由 cron 服务按时执行。

cron 表达式一共有几个字段?

标准 cron 是 5 个字段:分钟、小时、日、月、星期。部分系统(如 Quartz、Spring)使用 6 位,在最前面多一个"秒"字段。

星期字段里 0 和 7 都表示周日吗?

多数实现中 0 表示周日;部分实现也接受 7 表示周日。为兼容性,建议统一用 0 表示周日。

继续了解 Cron 生成器