温馨提示×

Debian日志为何不写

小樊
33
2026-07-27 01:38:51
栏目: 智能运维

Debian 系统日志“不写”通常不是单一原因,而是日志系统、配置、磁盘或权限等多个环节中的某一个出了问题。下面按最常见 → 较少见的顺序给你一个排查清单。


一、先确认你用的是哪种日志系统(非常重要)

Debian 不同版本默认不同:

Debian 版本 默认日志系统
≤ 10 (Buster) rsyslog
≥ 11 (Bullseye) systemd-journald
混合型 两者可能并存

快速判断

ps -ef | grep -E 'rsyslog|journald'

二、最常见原因(90% 都在这里)

1️⃣ rsyslog 没启动 / 挂了(Debian 10 及以前最常见)

systemctl status rsyslog

如果看到 inactivefailed

sudo systemctl start rsyslog
sudo systemctl enable rsyslog

查看是否报错:

journalctl -u rsyslog

2️⃣ 磁盘满了(日志直接写不进去)

df -h

如果 //var100%

du -sh /var/log/*

清理旧日志:

sudo journalctl --vacuum-size=200M

或删除大日志文件(不要直接 rm 正在写的文件)。


3️⃣ 日志被“轮转”后没恢复(logrotate 问题)

常见于:

  • /var/log/syslog 为 0 字节
  • rsyslog 实际写到了被删除的 inode

解决:

sudo systemctl restart rsyslog

4️⃣ journald 没持久化(Debian 11+ 很常见)

现象:

  • journalctl 能看到日志
  • /var/log/syslog 没有
  • 重启后日志消失

查看是否仅内存模式:

cat /etc/systemd/journald.conf | grep Storage

如果是:

Storage=volatile

改成:

Storage=persistent

然后:

sudo systemctl restart systemd-journald

✅ 日志会写到:

/var/log/journal/

三、配置导致“写但不想写”

5️⃣ rsyslog 配置过滤掉了日志

检查:

/etc/rsyslog.conf
/etc/rsyslog.d/*.conf

常见错误:

  • 错误使用 stop
  • 条件过滤太严格

例如:

*.info;mail.none;authpriv.none;cron.none    /var/log/messages

如果你把 *.info 删了,就可能什么都没有。


6️⃣ 程序根本没输出日志

尤其常见于:

  • cron
  • docker
  • 自定义服务

确认:

journalctl -u 服务名

如果这里也没有 → 不是 Debian 日志的问题,是程序没打日志


四、权限问题(少见但存在)

ls -ld /var/log
ls -l /var/log/syslog

正常应是:

root:adm

修复:

sudo chown root:adm /var/log/syslog
sudo chmod 640 /var/log/syslog

五、快速自检脚本(推荐)

echo "=== Disk ==="
df -h /

echo "=== rsyslog ==="
systemctl status rsyslog

echo "=== journald ==="
systemctl status systemd-journald

echo "=== journal storage ==="
grep Storage /etc/systemd/journald.conf

六、如果你愿意,我可以精准帮你定位

你可以直接贴出以下信息(任意几项都行):

cat /etc/debian_version
systemctl status rsyslog
systemctl status systemd-journald
df -h
ls -lh /var/log/

我可以直接告诉你“是哪一条原因 + 应该执行哪几行命令”

0