温馨提示×

怎样设置Ubuntu定时任务

小樊
32
2026-08-05 22:56:01
栏目: 智能运维

在 Ubuntu 中设置定时任务,通常使用 cronsystemd timer。下面按常见场景给你一个清晰、实用的说明。


一、使用 cron(最常用)

1️⃣ 编辑当前用户的定时任务

crontab -e

第一次使用会让你选择编辑器(推荐 nanovim)。


2️⃣ crontab 基本格式

* * * * * 命令
分 时 日 月 周
字段 含义
0–59
0–23
1–31
1–12
0–7(0 和 7 都是周日)

3️⃣ 常见示例

✅ 每天早上 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

4️⃣ 查看 / 删除定时任务

crontab -l      # 查看
crontab -r      # 删除当前用户所有任务

5️⃣ 系统级定时任务(需要 root)

sudo nano /etc/crontab

格式略有不同(需指定用户):

0 3 * * * root /usr/local/bin/script.sh

二、使用 systemd timer(更现代,适合服务器)

1️⃣ 创建服务文件

sudo nano /etc/systemd/system/mytask.service

内容示例:

[Unit]
Description=My Task

[Service]
Type=oneshot
ExecStart=/home/user/task.sh

2️⃣ 创建 timer 文件

sudo nano /etc/systemd/system/mytask.timer

示例(每天 8 点执行):

[Unit]
Description=Run mytask daily

[Timer]
OnCalendar=*-*-* 08:00:00
Persistent=true

[Install]
WantedBy=timers.target

3️⃣ 启用并启动

sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer

查看状态:

systemctl list-timers

三、cron vs systemd timer 怎么选?

场景 推荐
简单脚本、个人任务 ✅ cron
服务器、需要日志/依赖 ✅ systemd timer
精确到秒 ❌ cron(最小 1 分钟)
系统重启后自动恢复 ✅ systemd

四、常见问题

❓ 脚本不执行?

  • 使用 绝对路径
  • 测试命令是否能在终端直接运行
  • 查看日志:
grep CRON /var/log/syslog

如果你愿意,可以告诉我:

  • 服务器还是桌面
  • 多久执行一次
  • 执行什么命令或脚本

我可以直接帮你写好完整配置 ✅

0