Ubuntu22.04 主流定时任务一共4大类
注意:
cron下面又分好几种配置入口,属于同一套 cron 服务下不同写法
1. cron(最常用,周期性定时)
底层都是 cron 守护进程,4种配置方式:
- 用户级 crontab:
crontab -e/sudo crontab -e,每个用户独立任务,保存在/var/spool/cron/crontabs/ - 系统全局 /etc/crontab:必须指定运行用户,系统级定时
- /etc/cron.d/ 目录:放独立任务文件,适合软件包托管定时,同样要写用户字段
- cron 目录脚本:
/etc/cron.hourly、cron.daily、cron.weekly、cron.monthly,放可执行脚本,由 run-parts 执行(Ubuntu22.04里这套默认交给 anacron 调度)
✅ 特点:适合服务器、长期开机;机器关机错过时间,任务直接丢失,不会补跑
2. anacron(适合笔记本、不常开机器,按天周期)
配置文件:/etc/anacrontab
只支持按天粒度(日/周/月),不支持精确到几点几分;开机后检查错过任务,稍后自动补跑。
Ubuntu22.04 默认 anacron 由 systemd timer 触发,不是 cron 触发了
3. systemd timer(现代推荐,systemd 原生定时)
需要成对文件:xxx.service(任务)+ xxx.timer(定时规则)
/etc/systemd/system/xxx.service
/etc/systemd/system/xxx.timer
✅ 优点:journald 原生日志、支持依赖、资源限制、Persistent=true 开机补跑、RandomizedDelaySec 随机延迟;功能最强,配置稍繁琐
查看:systemctl list-timers
4. at(一次性定时任务)
只执行一次,到点跑完就消失:
at 14:30
atq # 查看任务
atrm # 删除任务
适合临时一次性任务,不适合循环定时
快速对比小结
| 方式 | 周期类型 | 关机补跑 | 精度 | 典型场景 |
|---|---|---|---|---|
| cron | 循环 | ❌ | 分钟级 | 服务器常规定时 |
| anacron | 日/周/月 | ✅ | 粗粒度 | 台式机笔记本备份 |
| systemd timer | 循环 | ✅(Persistent) | 高精度 | 需要日志、依赖、资源管控 |
| at | 一次性 | ❌ | 时间点 | 临时单次任务 |
补充:还有小众方案(bash 脚本 sleep 循环、fcron 第三方包),不属于系统自带原生方案,一般不推荐。