温馨提示×

为何linux日志写入失败

小樊
55
2026-09-08 11:36:31
栏目: 智能运维

Linux 日志写入失败是一个比较常见但原因多样的问题。下面按最常见原因 → 排查方法来系统说明。


一、最常见原因分类

1️⃣ 磁盘空间满了(最常见)

日志写不进去,首先怀疑磁盘。

排查:

df -h
df -i   # 看 inode 是否用满

典型现象:

  • 日志突然停止
  • 程序报错 No space left on device

解决:

  • 清理旧日志
  • 扩容
  • 配置日志轮转(logrotate)

2️⃣ 日志文件权限不足

日志进程(如 rsyslog、appuser)没有写权限。

排查:

ls -l /var/log/xxx.log
ps aux | grep rsyslog

常见错误:

  • 文件属主是 root,程序以普通用户运行
  • 日志目录不可写

解决:

chown appuser:appuser /var/log/xxx.log
chmod 644 /var/log/xxx.log

3️⃣ 日志服务未运行或异常

比如 rsyslog / systemd-journald 挂了。

排查:

systemctl status rsyslog
systemctl status systemd-journald
journalctl -xe

解决:

systemctl restart rsyslog

4️⃣ 文件被删除但仍被占用(“幽灵日志”)

日志文件被 rm,但进程还持有文件句柄。

现象:

  • df 显示空间没释放
  • 日志“写不进去了”

排查:

lsof | grep deleted

解决:

  • 重启相关进程
  • 或正确用 logrotate

5️⃣ SELinux / AppArmor 限制

安全模块阻止写日志。

排查:

getenforce
ausearch -m avc -ts recent

解决:

  • 调整策略
  • 或临时测试:
setenforce 0

6️⃣ 程序自身日志配置错误

例如:

  • 路径写错
  • 日志级别过高
  • 异步写日志失败

排查:

  • 看应用配置文件
  • 看 stderr / 启动日志

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

系统因错误进入只读模式。

排查:

mount | grep " / "
dmesg | tail

解决:

  • 修复文件系统
fsck -y /dev/sdX

二、快速排查清单(推荐顺序)

df -h
df -i
ls -l /var/log
systemctl status rsyslog
journalctl -xe
lsof | grep deleted

三、如果你愿意,我可以更精准帮你

你可以补充:

  1. 是 系统日志 还是 应用日志?
  2. 使用的日志工具(rsyslog / journald / log4j / 自写)?
  3. 报错信息原文?
  4. 日志路径?

我可以直接帮你定位到具体原因。

0 踩