温馨提示×

如何排查debian定时器错误

小樊
37
2026-09-28 23:59:20
栏目: 智能运维

在 Debian 里“定时器”通常有两种常见含义:

  1. systemd timer(现代 Debian 默认)
  2. cron / anacron(传统定时任务)

下面分别说明如何排查错误。


一、systemd 定时器排查

1. 查看定时器状态

systemctl list-timers --all

或查看某个具体定时器:

systemctl status mytimer.timer

2. 查看定时器是否触发

systemctl list-timers mytimer.timer
  • 看 LEFT / LAST 是否更新
  • 若 LEFT 为空且未触发,说明配置有问题

3. 查看对应的 service 日志

timer 通常调用一个 .service:

journalctl -u mytimer.service
journalctl -u mytimer.timer

加时间范围:

journalctl -u mytimer.service --since "1 hour ago"

4. 手动启动测试

systemctl start mytimer.service

看是否报错。

5. 常见错误点

  • .timer 里 OnCalendar 写错(可用校验):
    systemd-analyze calendar "daily"
    
  • .service 中 ExecStart 路径错误
  • 脚本无执行权限
  • 用户 timer 未 enabled --user
  • 环境变量缺失(systemd 环境很少)

二、cron / anacron 排查

1. 查看 cron 服务状态

systemctl status cron

2. 查看 cron 日志

Debian 默认日志在:

journalctl -u cron

或

grep CRON /var/log/syslog

3. 手动执行 cron 命令

把 cron 里的命令原样执行:

/bin/bash /path/script.sh

4. 常见错误

  • 路径未使用绝对路径
  • 环境变量缺失(PATH 很少)
  • 权限不足
  • 输出未重定向导致 mail 失败
  • 脚本无执行权限

示例安全写法:

0 2 * * * /usr/bin/python3 /opt/script.py >> /var/log/script.log 2>&1

三、通用排查清单

✅ 时间是否正确

timedatectl

✅ 时区是否正确

date

✅ 脚本是否可执行

ls -l /path/script.sh

✅ 日志是否打开

journalctl -xe

四、如果你愿意,我可以更具体帮你

你可以告诉我:

  • 用的是 systemd timer 还是 cron
  • 具体 报错信息或现象
  • 定时器配置文件内容(可脱敏)

我可以直接帮你定位问题。

0 踩