温馨提示×

ubuntu定时器为何出错

小樊
44
2026-10-06 23:56:54
栏目: 智能运维

在 Ubuntu 里“定时器出错”通常和 systemd timer 或 cron 有关。下面按常见原因给你排查思路,你可以对照看是哪一种。


一、如果你用的是 systemd timer(推荐方式)

1️⃣ timer 没启用

systemctl list-timers

如果没看到你的 timer:

systemctl enable xxx.timer
systemctl start xxx.timer

2️⃣ 服务单元失败

timer 只是“触发”,真正干活的是 .service:

systemctl status xxx.service
journalctl -u xxx.service

常见错误:

  • 脚本路径不存在
  • 权限不足
  • 没写 #!/bin/bash

3️⃣ 路径或环境变量问题

systemd 环境很“干净”:

  • 不要用 ~/
  • 写绝对路径
  • 必要变量在 service 里写:
[Service]
Environment=PATH=/usr/bin:/bin

4️⃣ OnCalendar 写错

OnCalendar=*-*-* 02:00:00

错误写法会导致 timer 根本不触发。


二、如果你用的是 cron(/etc/crontab 或 crontab -e)

1️⃣ 时间格式错

* * * * * command

分钟 小时 日 月 周

2️⃣ 权限问题

  • /etc/cron.d/ 文件必须是 644
  • 用户没在 /etc/cron.allow

3️⃣ 环境变量缺失

cron 默认 PATH 很小:

PATH=/usr/bin:/bin

建议在脚本里 source 环境或写全路径。

4️⃣ 日志看不到

grep CRON /var/log/syslog

三、常见典型错误总结

❌ 脚本没执行权限
❌ 用了 systemctl start xxx.timer 但没 enable
❌ 脚本里用了交互命令(systemd/cron 不支持)
❌ 输出没重定向,导致 mail 报错


四、你可以直接贴错误

如果你愿意,可以把下面信息发我,我可以直接帮你定位:

  1. 用的是 cron 还是 systemd timer
  2. 定时器配置文件内容
  3. 报错信息(journalctl 或 /var/log/syslog)

我可以一步一步帮你改到能跑 ✅

0 踩