温馨提示×

debian日志为何写入失败

小樊
58
2026-09-16 06:40:51
栏目: 智能运维

Debian 系统日志写入失败,通常不是“某一个原因”,而是权限、磁盘、配置、服务状态这几类问题之一。下面按最常见 → 次常见给你排查思路和对应解决办法。


一、最常见原因排查

1️⃣ 磁盘空间已满(极高概率)

日志写不进去,第一反应看磁盘。

df -h

如果 / 或 /var 使用率是 100%:

# 清理旧日志
journalctl --vacuum-size=200M
# 或
rm -f /var/log/*.gz

2️⃣ inode 用完(易被忽略)

磁盘有空间,但 inode 满,也会导致写入失败。

df -i

如果 IUse% 是 100%:

# 查找大量小文件目录
find /var/log -type f | wc -l

3️⃣ 日志目录权限错误

常见于手动改过 /var/log 或 /run/log

ls -ld /var/log

正常应为:

drwxrwxr-x root syslog

修复:

chown root:syslog /var/log
chmod 775 /var/log

4️⃣ rsyslog / syslog-ng 服务未运行

Debian 默认用 rsyslog

systemctl status rsyslog

如果没跑:

systemctl start rsyslog
systemctl enable rsyslog

查看错误:

journalctl -u rsyslog

5️⃣ 文件系统只读(RO)

系统异常后会挂载为只读

mount | grep ' / '

看到 ro:

mount -o remount,rw /

二、systemd 日志(journal)写不进去

journal 目录权限问题

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

journal 被禁用

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

如果是:

Storage=none

改为:

Storage=persistent

然后:

systemctl restart systemd-journald

三、SELinux / AppArmor(较少但存在)

Debian 默认 AppArmor

aa-status

如果是 rsyslog 被拒绝:

journalctl | grep apparmor

四、程序自身日志路径错误

有些服务写日志到不存在的路径:

ls -l /var/log/xxx

常见于:

  • Docker
  • Nginx
  • 自定义 systemd 服务

五、快速自检清单(建议照做)

df -h
df -i
systemctl status rsyslog
systemctl status systemd-journald
ls -ld /var/log
mount | grep ' / '

六、如果你愿意,我可以更精确帮你

你可以直接贴:

  1. 具体日志报错内容
  2. 是 rsyslog 还是 journalctl
  3. 哪个服务日志写不进去
  4. Debian 版本(cat /etc/os-release)

我可以一步定位到根因。

0 踩