Debian 系统日志“不写”通常不是单一原因,而是日志系统、配置、磁盘或权限等多个环节中的某一个出了问题。下面按最常见 → 较少见的顺序给你一个排查清单。
Debian 不同版本默认不同:
| Debian 版本 | 默认日志系统 |
|---|---|
| ≤ 10 (Buster) | rsyslog |
| ≥ 11 (Bullseye) | systemd-journald |
| 混合型 | 两者可能并存 |
ps -ef | grep -E 'rsyslog|journald'
systemctl status rsyslog
如果看到 inactive 或 failed:
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
查看是否报错:
journalctl -u rsyslog
df -h
如果 / 或 /var 是 100%:
du -sh /var/log/*
清理旧日志:
sudo journalctl --vacuum-size=200M
或删除大日志文件(不要直接 rm 正在写的文件)。
常见于:
/var/log/syslog 为 0 字节解决:
sudo systemctl restart rsyslog
现象:
journalctl 能看到日志/var/log/syslog 没有查看是否仅内存模式:
cat /etc/systemd/journald.conf | grep Storage
如果是:
Storage=volatile
改成:
Storage=persistent
然后:
sudo systemctl restart systemd-journald
✅ 日志会写到:
/var/log/journal/
检查:
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
常见错误:
stop例如:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
如果你把 *.info 删了,就可能什么都没有。
尤其常见于:
确认:
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/
我可以直接告诉你“是哪一条原因 + 应该执行哪几行命令”。