Ubuntu 定时任务 cron 配置
Ubuntu 上的 cron 定时任务:crontab -e 编辑、五个时间字段的写法、/etc/cron.d 系统级任务、日志查看与「任务没跑」的三个高频原因。
结论先行
Ubuntu 的定时任务就是标准 cron:用户级用 crontab -e,系统级用 /etc/cron.d/某文件,时间字段五段(分/时/日/月/周)——Ubuntu 26.04 Live Server 条目 与桌面版通用;Debian 侧(Debian 索引)行为完全一致。
时间字段速记
| 字段 | 顺序 | 含义 | 示例 |
|---|---|---|---|
| 分 | 1 | 0–59 | 每 5 分钟:*/5 |
| 时 | 2 | 0–23 | 每天 3 点:0 3 * * * |
| 日 | 3 | 1–31 | 每月 1 日:0 0 1 * * |
| 月 | 4 | 1–12 | 每周日:* * * * 0 |
| 周 | 5 | 0–7(0/7 都是周日) |
用户级 cron(最常用)
crontab -e
# 加一行(注意:cron 里的命令要写绝对路径)
0 2 * * * /usr/local/bin/备份脚本.sh >> /var/log/备份.log 2>&1
crontab -l看当前用户的任务列表。- 输出默认发邮件(服务器一般没邮件系统)→ 必须重定向到日志文件,否则看不到结果。
系统级(多用户场景)
/etc/cron.d/任务名,每行多一个「执行用户」字段:
30 3 * * * root /usr/local/bin/清理日志.sh
任务没跑的三个高频原因
- 路径没写绝对:cron 的环境变量极简,写相对路径大概率找不到脚本。
- 脚本没执行权限:
chmod +x 脚本。 - 时间没到/时区不对:
date对一下机器时间;journalctl -u cron(Ubuntu 上服务名是cron,不是crond)看它有没有按时触发。
拿不准就先用一条「每分钟
date >> /tmp/cron-test」验证 cron 本体在跑,再排任务本身的问题。