linux系统日志核心位于/var/log/,如messages、syslog、auth.log等,分别记录通用事件、认证操作等;需用tail、grep、journalctl等命令查看过滤,注意logrotate轮转及journald持久化配置。

linux系统日志是排查故障、监控运行状态和审计安全事件的核心依据。掌握日志文件的位置、格式和查看方法,能快速定位问题根源。
核心日志文件位置与用途
大多数日志由rsyslog或journald管理,传统路径集中在/var/log/目录下:
- /var/log/messages:通用系统日志(centos/RHEL 7以前、部分debian系),记录内核、服务启动、邮件、cron等非认证类事件
- /var/log/syslog:Debian/ubuntu默认系统日志,作用类似messages,但更广泛涵盖系统组件
- /var/log/auth.log:专注用户认证相关操作,如ssh登录、sudo命令、su切换、PAM事件
- /var/log/kern.log:内核消息独立记录(常见于Ubuntu),便于单独分析硬件、驱动、网络栈异常
- /var/log/dmesg:开机时内核环缓冲区快照,适合查硬件识别、模块加载失败等问题(也可用
dmesg命令实时读取) - /var/log/journal/:systemd-journald的二进制日志存储目录(RHEL 7+/Ubuntu 16.04+默认启用),需用
journalctl访问
常用查看与过滤方法
不依赖图形界面,纯命令行即可高效分析:
- 用
tail -f /var/log/syslog实时追踪最新日志,按Ctrl+C退出 - 用
grep "Failed password" /var/log/auth.log快速筛选SSH暴力破解尝试 - 用
less +G /var/log/messages打开并自动跳至末尾,支持上下翻页和搜索(输入/关键词) - 对压缩过的旧日志(如
messages-20240501.gz),直接用zgrep或zcat,例如:zgrep "Out of memory" /var/log/messages-*.gz
systemd-journald日志操作要点
现代发行版默认启用journald,其日志更结构化、支持字段过滤,但不直接以文本形式存放:
-
journalctl -u sshd.service:查看sshd服务的全部日志 -
journalctl --since "2 hours ago" --until "1 hour ago":按时间范围检索 -
journalctl -p err..crit:只显示错误(err)及更严重级别(crit、alert、emerg)的日志 -
journalctl -b -1:查看上一次启动的日志(-b 表示boot,-1 是上一次) - 日志默认仅保存在内存和/tmp中,如需持久化,需创建
/var/log/journal/目录并重启journald(systemctl restart systemd-journald)
日志轮转与清理注意事项
日志不会自动删除,靠logrotate定期归档压缩,配置通常在/etc/logrotate.d/下:
- 检查
/etc/logrotate.conf中的全局设置,如保留几周、是否压缩、是否每日轮转 - 误删
/var/log/messages可能导致新日志写入失败(需重启rsyslog或reboot才能恢复),建议用truncate -s 0 /var/log/messages清空内容而非删除文件 - 磁盘空间不足时,可临时清理
/var/log/journal/中过期的二进制日志:journalctl --vacuum-time=2weeks或--vacuum-size=500M
基本上就这些。理清路径、匹配工具、注意轮转机制,日常运维查日志就不费劲了。