首页/系统/Linux 运维命令速查/cron 特殊字符串 @reboot/@daily
定时任务与计划50 条

cron 特殊字符串 @reboot/@daily

@daily、@weekly、@reboot 等快捷写法替代五字段;@reboot 在 cron 守护启动时执行一次,语义与「系统开机任务」并不完全等价。

Linux 运维命令速查系统更新于 2026-10-13

特殊字符串是什么

cron 支持用 @ 开头的特殊字符串替代五段式时间字段,写法更直观:@reboot 在 cron 守护进程启动时执行一次,@daily 等价 0 0 * * *,@hourly 等价 0 * * * *。要特别注意 @reboot 的语义是「cron 启动时」而不是「系统完成启动时」:它不保证网络、存储或数据库已经就绪,把需要依赖的服务交给它是常见错误。需要启动顺序保证的场景,应当使用 systemd 单元并声明依赖关系。

基本信息

适用平台Linux(cronie、vixie-cron 等主流实现)
语法@reboot|@yearly|@annually|@monthly|@weekly|@daily|@midnight|@hourly 命令
等价关系@hourly = 0 * * * *,@daily 与 @midnight = 0 0 * * *,@weekly = 0 0 * * 0
兼容性局限精简实现(busybox crond、部分容器镜像)不支持 @ 系列
时间基准与五段式写法一致,依赖系统时区与系统时钟

典型使用场景

  • 开机执行一次准备工作,如生成缓存或预热数据
  • 用简写替代常见周期表达式,提高可读性
  • 阅读他人 crontab 时快速判断执行频率
  • 从 cron 迁移到 systemd 计时器时做语义对照
  • 在文档与代码评审中统一时间表达方式

示例

示例
@reboot   /opt/app/start.sh               # cron 守护启动时执行一次
@daily    /opt/app/clean.sh               # 等价 0 0 * * *
@hourly   /opt/app/check.sh               # 等价 0 * * * *
@weekly   /opt/app/rotate.sh              # 等价 0 0 * * 0
@monthly  /opt/app/report.sh              # 等价 0 0 1 * *
@reboot sleep 30 && /opt/app/wait-db.sh   # 自行等待依赖就绪后再执行

特殊字符串等价对照

写法等价时间字段说明
@yearly 与 @annually0 0 1 1 *每年 1 月 1 日零点
@monthly0 0 1 * *每月 1 日零点
@weekly0 0 * * 0每周日零点
@daily 与 @midnight0 0 * * *每天零点
@hourly0 * * * *每小时整点
@reboot无等价写法cron 守护启动时执行一次
@reboot 不保证系统就绪时序,cron 可能早于网络与存储挂载。启动服务应使用 systemd 单元,并用 After= 与 Requires= 声明依赖关系。
精简 cron 实现(busybox crond 与部分容器镜像)不支持 @ 系列。上线前先在目标环境验证一条测试任务,否则任务会静默不执行。
@ 系列不能与五段式时间字段混写,形如 @daily 0 0 * * * cmd 属于语法错误。在不需要简写语义的环境里,直接使用等价的时间字段更保险。
@reboot 的触发点是 cron 守护进程启动,而不是内核完成启动。手工重启 cron 服务也会触发它,任务可能在非预期时刻被重复执行。

易错点

  • 把依赖数据库或网络的任务放在 @reboot,因依赖未就绪而失败
  • 把 @reboot 当成 systemd 的服务自启,缺少失败重试与状态管理
  • 在不支持 @ 系列的精简实现上使用,任务不报错也不执行
  • @daily 一类简写在不同实现下解释不一致,跨时区或跨发行版环境要先确认行为

数据来源与参考

  • man 5 crontab(cronie,@reboot 与别名说明)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌