温馨提示×

debian日志为何重复报错

小樊
49
2026-09-16 06:49:52
栏目: 智能运维

在 Debian 系统中,日志重复报错是一个比较常见的问题,原因通常可以分为几类。下面我按“常见原因 → 排查方法 → 解决思路”来说明。


一、最常见原因

1. systemd + rsyslog 重复记录

Debian 默认使用:

  • systemd-journald(二进制日志)
  • rsyslog(文本日志,如 /var/log/syslog)

如果配置不当,同一条日志会被:

  • journald 记一次
  • rsyslog 再从 journal 或 /dev/log 读一次

✅ 表现:

  • /var/log/syslog 和 journalctl 内容重复
  • 同一条错误出现两次

✅ 排查:

journalctl -xe | tail
tail -n 50 /var/log/syslog

✅ 解决: 编辑 /etc/rsyslog.conf,避免重复读取:

# 注释或删除
# module(load="imjournal")

或反向(只用 journal,不用 rsyslog 重复读)


2. 服务自身 + systemd 同时报错

某些服务(如 cron、sshd、nginx):

  • 自己写日志
  • systemd 也捕获 stderr

✅ 表现:

  • /var/log/nginx/error.log
  • journalctl -u nginx 同时出现相同错误

✅ 解决:

  • 让服务只写自己的日志
  • 或在 systemd unit 中:
StandardOutput=null
StandardError=journal

3. 日志轮转(logrotate)异常

如果:

  • 日志没被正确 rotate
  • 或进程仍写旧文件

可能出现:

  • 同一错误在多个文件出现
  • 或重复写入

✅ 排查:

ls -lh /var/log/
cat /etc/logrotate.d/rsyslog

✅ 解决:

logrotate -d /etc/logrotate.conf  # 测试
logrotate -f /etc/logrotate.conf  # 强制执行

4. 守护进程崩溃后反复重启

如:

  • 服务 Restart=always
  • 每次启动都报错

✅ 表现:

  • 日志中“相同错误 × N 次”
  • 时间间隔规律

✅ 排查:

systemctl status 服务名
journalctl -u 服务名 --since "10 min ago"

✅ 解决:

  • 修复根本错误
  • 或限制重启频率:
StartLimitIntervalSec=60
StartLimitBurst=3

5. 多实例或重复启动

例如:

  • 同一服务被 systemd + 脚本启动
  • Docker / 容器重复运行

✅ 排查:

ps aux | grep 服务名
systemctl list-units --type=service

二、快速定位“是不是重复”的方法

# 看最近报错
journalctl -p err -n 50

# 对比 syslog
grep -i "关键字" /var/log/syslog

# 看来源
journalctl -o verbose | grep -i "SYSLOG_IDENTIFIER"

三、你可以补充的信息(方便我精确定位)

如果你愿意,可以贴出:

  1. 具体报错内容(脱敏)
  2. 出现在哪个日志文件
  3. Debian 版本
    cat /etc/debian_version
    
  4. 是否使用 Docker / K8s / 自建服务

我可以直接告诉你“是哪一类重复 + 怎么改配置”。

0 踩