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 小时制) |
| 3 | 日 | 1-31 | 每月第几天 |
| 4 | 月 | 1-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很精简,python、node等最好写成完整路径。 - 把秒也写进去:标准 cron 没有秒;需要秒级请用 6 位格式的实现(如 Quartz)。
下一步
看懂了格式,接着可以:
- 直接用 Cron 表达式生成器 可视化生成并预览执行时间;
- 读 Cron 表达式怎么写 学习从零构造;
- 查 Cron 表达式示例大全 复制常见写法。