在 Ubuntu 中设置定时任务,通常使用 cron 或 systemd timer。下面按常见场景给你一个清晰、实用的说明。
crontab -e
第一次使用会让你选择编辑器(推荐 nano 或 vim)。
* * * * * 命令
分 时 日 月 周
| 字段 | 含义 |
|---|---|
| 分 | 0–59 |
| 时 | 0–23 |
| 日 | 1–31 |
| 月 | 1–12 |
| 周 | 0–7(0 和 7 都是周日) |
✅ 每天早上 8 点执行脚本
0 8 * * * /home/user/backup.sh
✅ 每 5 分钟执行一次
*/5 * * * * /usr/bin/python3 /home/user/task.py
✅ 每周一 3 点执行
0 3 * * 1 /home/user/weekly.sh
✅ 后台执行并保存日志
0 2 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1
crontab -l # 查看
crontab -r # 删除当前用户所有任务
sudo nano /etc/crontab
格式略有不同(需指定用户):
0 3 * * * root /usr/local/bin/script.sh
sudo nano /etc/systemd/system/mytask.service
内容示例:
[Unit]
Description=My Task
[Service]
Type=oneshot
ExecStart=/home/user/task.sh
sudo nano /etc/systemd/system/mytask.timer
示例(每天 8 点执行):
[Unit]
Description=Run mytask daily
[Timer]
OnCalendar=*-*-* 08:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer
查看状态:
systemctl list-timers
| 场景 | 推荐 |
|---|---|
| 简单脚本、个人任务 | ✅ cron |
| 服务器、需要日志/依赖 | ✅ systemd timer |
| 精确到秒 | ❌ cron(最小 1 分钟) |
| 系统重启后自动恢复 | ✅ systemd |
grep CRON /var/log/syslog
如果你愿意,可以告诉我:
我可以直接帮你写好完整配置 ✅