Debian 系统日志写入失败,通常不是“某一个原因”,而是权限、磁盘、配置、服务状态这几类问题之一。下面按最常见 → 次常见给你排查思路和对应解决办法。
日志写不进去,第一反应看磁盘。
df -h
如果 / 或 /var 使用率是 100%:
# 清理旧日志
journalctl --vacuum-size=200M
# 或
rm -f /var/log/*.gz
磁盘有空间,但 inode 满,也会导致写入失败。
df -i
如果 IUse% 是 100%:
# 查找大量小文件目录
find /var/log -type f | wc -l
常见于手动改过 /var/log 或 /run/log
ls -ld /var/log
正常应为:
drwxrwxr-x root syslog
修复:
chown root:syslog /var/log
chmod 775 /var/log
Debian 默认用 rsyslog
systemctl status rsyslog
如果没跑:
systemctl start rsyslog
systemctl enable rsyslog
查看错误:
journalctl -u rsyslog
系统异常后会挂载为只读
mount | grep ' / '
看到 ro:
mount -o remount,rw /
ls -ld /var/log/journal
正常:
drwxr-xr-x root systemd-journal
修复:
mkdir -p /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2755 /var/log/journal
systemctl restart systemd-journald
cat /etc/systemd/journald.conf | grep Storage
如果是:
Storage=none
改为:
Storage=persistent
然后:
systemctl restart systemd-journald
Debian 默认 AppArmor
aa-status
如果是 rsyslog 被拒绝:
journalctl | grep apparmor
有些服务写日志到不存在的路径:
ls -l /var/log/xxx
常见于:
df -h
df -i
systemctl status rsyslog
systemctl status systemd-journald
ls -ld /var/log
mount | grep ' / '
你可以直接贴:
cat /etc/os-release)我可以一步定位到根因。