Linux 下“日志写入失败”是一个比较常见但原因很多的问题,下面按常见原因 → 排查方法 → 解决思路系统总结一下。
日志写不进去,最常见就是磁盘满了。
排查:
df -h
看 /var、/ 或日志所在分区是否 100%。
解决:
磁盘空间还有,但 inode 用完,也无法写文件。
排查:
df -i
解决:
应用用户没有写权限。
排查:
ls -l /var/log/xxx.log
ls -ld /var/log
解决:
chown appuser:appuser /var/log/xxx.log
chmod 644 /var/log/xxx.log
SELinux 可能禁止写入。
排查:
getenforce
tail /var/log/audit/audit.log
解决:
setenforce 0
磁盘错误可能导致系统自动挂载为只读。
排查:
mount | grep " / "
dmesg | grep "read-only"
解决:
mount -o remount,rw /
并检查磁盘错误:
fsck
例如 /var/log 被空挂载点覆盖。
排查:
mount
df -h
系统日志服务挂了或配置错误。
排查:
systemctl status rsyslog
journalctl -u rsyslog
解决:
systemctl restart rsyslog
轮转失败导致写入异常。
排查:
/var/lib/logrotate/status
程序指定的日志目录未创建。
解决:
mkdir -p /var/log/app
chown appuser /var/log/app
文件删了,但进程仍持有 fd。
排查:
lsof | grep deleted
解决:
df -h
df -i
ls -l 日志路径
systemctl status rsyslog
dmesg | tail
如果你能补充:
我可以帮你更精准定位原因。