温馨提示×

linux日志丢失什么原因

小樊
41
2026-10-20 00:40:56
栏目: 智能运维

Linux 日志丢失(如 /var/log 下日志文件为空、不更新或被截断)通常由以下几类原因造成,按常见程度和排查思路整理:


一、日志服务异常

1. rsyslog / syslog-ng 未运行或崩溃

systemctl status rsyslog
journalctl -u rsyslog

原因:

  • 服务被误停
  • 配置文件错误导致启动失败
  • OOM 被杀死

2. systemd-journald 异常(journal 日志丢失)

systemctl status systemd-journald
journalctl --disk-usage

可能原因:

  • journal 存储模式为 volatile(仅内存)
  • 磁盘空间不足导致 journal 被清理

二、磁盘或 inode 问题

3. 磁盘空间满

df -h

日志无法写入,常被直接丢弃。

4. inode 用尽

df -i

即使磁盘有空间,inode 满也会导致日志无法创建。


三、日志轮转(logrotate)配置问题

5. logrotate 误删或清空

  • postrotate 脚本错误
  • copytruncate 使用不当
  • 轮转后权限错误

排查:

cat /etc/logrotate.d/*
grep -R logrotate /var/log/

四、权限或 SELinux 问题

6. 日志文件权限错误

ls -l /var/log/
  • 属主/属组错误
  • 应用无写权限

7. SELinux 限制

getenforce
ausearch -m avc -ts recent

五、应用层问题

8. 程序未写日志

  • 日志级别设置过高(error 以上)
  • 配置了错误的日志路径
  • 程序以 stdout 输出但被丢弃(容器常见)

六、系统异常或人为操作

9. 系统非正常关机

  • 断电、内核 panic
  • 未同步的缓存日志丢失

10. 人为清理

rm -f /var/log/*
> /var/log/messages

或定时任务误删


七、容器 / 云环境特殊原因

  • 容器日志驱动为 none
  • 宿主机日志被采集后清理
  • 临时文件系统(tmpfs)重启即丢

快速排查清单

df -h
df -i
systemctl status rsyslog
systemctl status systemd-journald
ls -l /var/log
journalctl --disk-usage

如果你能补充:

  • 哪类日志丢失(message / secure / journal / 应用日志)
  • 是否容器环境
  • 系统版本(CentOS / Ubuntu)

我可以给你更精确的判断和修复方案。

0 踩