温馨提示×

ubuntu定时器为何不执行

小樊
45
2026-09-12 23:21:02
栏目: 智能运维

Ubuntu 下“定时器不执行”通常是指 cron / systemd timer 没有按预期运行。下面按最常见原因 → 排查方法来说明。


一、如果你用的是 cron(最常见)

1️⃣ 服务没启动

sudo systemctl status cron

如果不是 active (running)

sudo systemctl start cron
sudo systemctl enable cron

2️⃣ 时间写错(最容易踩坑)

cron 时间是 服务器本地时间,不是你的时钟。

示例:

0 2 * * *  /home/user/backup.sh

表示 每天 2:00

常见错误:

  • 写成了 0 2 * * * 但服务器时区不对
  • 分钟和小时写反

检查时区:

timedatectl

3️⃣ 脚本没有执行权限

chmod +x /path/to/script.sh

4️⃣ cron 环境变量问题(非常常见)

cron 的环境极少,导致脚本里命令找不到。

✅ 推荐写法:

0 2 * * *  /bin/bash /home/user/backup.sh >> /tmp/cron.log 2>&1

脚本里也建议:

#!/bin/bash
source /etc/profile

5️⃣ 没用绝对路径

cron 里 不能用相对路径

❌ 错误:

python app.py

✅ 正确:

/usr/bin/python3 /home/user/app.py

6️⃣ 用户 cron 写错地方

crontab -l        # 当前用户
sudo crontab -l   # root

别搞混。


7️⃣ 没有日志,不知道失败

加日志:

* * * * *  /path/script.sh >> /tmp/cron.log 2>&1

然后:

cat /tmp/cron.log

二、如果你用的是 systemd timer

1️⃣ timer 没启用

systemctl list-timers

启用:

sudo systemctl enable mytimer.timer
sudo systemctl start mytimer.timer

2️⃣ service 本身没成功

systemctl status mytimer.service
journalctl -u mytimer.service

3️⃣ OnCalendar 写错

示例(每天 3 点):

OnCalendar=*-*-* 03:00:00

三、快速自检清单 ✅

  • [ ] cron / timer 已启动
  • [ ] 脚本有执行权限
  • [ ] 使用绝对路径
  • [ ] 有日志输出
  • [ ] 时区正确
  • [ ] 环境变量没问题

如果你愿意,可以把:

  • 你用的 cron 还是 systemd timer
  • 你的 定时配置
  • 脚本内容(或命令)

贴出来,我可以直接帮你定位是哪一步错了。

0