
Linux系统日志主要存放在 /var/log/ 目录下,不同发行版和日志管理方式(rsyslog 或 systemd-journald)会影响具体文件名和格式。掌握关键路径、对应用途及实用命令,就能快速定位问题。
核心日志文件位置与作用
多数系统日志由 rsyslog 或 journald 管理,文本日志集中于 /var/log/:
- /var/log/messages:CentOS/RHEL 7 及更早版本、部分 Debian 系统的通用系统日志,含内核消息、服务启停、cron、邮件等非认证类事件
- /var/log/syslog:Ubuntu/Debian 默认系统日志,覆盖范围比 messages 更广,整合多数系统组件输出
- /var/log/auth.log(或 /var/log/secure):记录所有认证行为,如 SSH 登录、sudo 使用、su 切换、PAM 模块事件,安全审计首选
- /var/log/kern.log:Ubuntu 等系统中独立保存的内核日志,便于排查驱动、网络栈、硬件异常
-
/var/log/dmesg:开机时内核环缓冲区快照,适合查硬件识别失败、模块加载错误;也可用
dmesg命令实时读取 -
/var/log/journal/:systemd-journald 的二进制日志存储目录(RHEL 7+/Ubuntu 16.04+ 默认启用),必须用
journalctl访问,不支持直接 cat 或 grep
常用查看与过滤命令
无需图形界面,纯命令行即可高效分析:
- 实时追踪最新日志:
tail -f /var/log/syslog(按 Ctrl+C 退出) - 快速筛选关键词:
grep "Failed password" /var/log/auth.log查暴力破解尝试 - 翻页浏览并跳至末尾:
less +G /var/log/messages,进入后输入/关键词搜索 - 查看压缩旧日志:
zgrep "Out of memory" /var/log/messages-*.gz - 按时间范围过滤 journal 日志:
journalctl --since "2026-03-03 14:00" --until "2026-03-03 15:00"
systemd-journald 日志操作要点
现代发行版默认启用 journald,其日志结构化强、支持字段过滤,但不可直接编辑或删除:
- 查看全部日志:
journalctl - 查看某服务日志:
journalctl -u nginx或journalctl -u sshd - 按优先级过滤(如只看错误):
journalctl -p err - 导出为文本便于分析:
journalctl -o json-pretty > journal.json - 启用持久化存储(否则重启后日志丢失):
sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald
日志轮转与空间管理注意事项
日志不会自动删除,依赖 logrotate 定期归档压缩,配置通常在 /etc/logrotate.d/ 下:
- 检查全局策略:
cat /etc/logrotate.conf,关注rotate(保留份数)、daily/weekly(轮转频率)、compress(是否压缩) - 清空日志内容建议用:
truncate -s 0 /var/log/messages,避免误删文件导致新日志无法写入 - 磁盘空间紧张时,可清理旧归档:
find /var/log -name "*.gz" -mtime +30 -delete - 确认日志服务仍在运行:
systemctl status rsyslog(或systemd-journald),异常时需重启











