日志文件的位置
Linux日志主要存储在 /var/log
目录下,常见日志包括:
- 系统日志:
/var/log/syslog
(Ubuntu/Debian)或/var/log/messages
(CentOS/RHEL) - 认证日志:
/var/log/auth.log
(记录登录、sudo操作) - 内核日志:
/var/log/kern.log
- 应用日志:如 Apache (
/var/log/apache2/access.log
), Nginx (/var/log/nginx/access.log
)
基础查看命令
cat
一次性显示整个文件(适合小文件):
cat /var/log/syslog
tail
查看文件末尾内容(默认显示最后10行):
tail /var/log/auth.log
- 实时追踪日志(最常用):
tail -f /var/log/nginx/error.log # -f 参数持续刷新新日志
head
查看文件开头(默认前10行):
head /var/log/kern.log
less
/ more
分页查看大文件(支持上下翻页、搜索):
less /var/log/syslog
- 在
less
界面中:- 按 搜索关键词(如
/error
) - 按
q
退出
- 按 搜索关键词(如
高级过滤与分析
grep
过滤关键词
筛选包含特定关键词的行(如错误信息):
grep "error" /var/log/syslog # 搜索 "error" grep -i "timeout" /var/log/nginx/access.log # -i 忽略大小写
组合命令
联合使用 tail
、grep
实现实时过滤:
tail -f /var/log/syslog | grep "ssh" # 只显示含 "ssh" 的实时日志
journalctl
(Systemd 系统专用)
查看由 Systemd 管理的服务日志(如 Ubuntu 16.04+、CentOS 7+):
journalctl -u nginx.service # 查看 Nginx 日志 journalctl -f -u sshd.service # 实时追踪 SSH 日志 journalctl --since "2025-10-01" --until "2025-10-02" # 按时间范围筛选
awk
/ cut
提取字段
解析结构化日志(如 Nginx 访问日志):
awk '{print $1}' /var/log/nginx/access.log # 提取所有访问的 IP 地址
处理轮转日志(Log Rotation)
日志文件会被自动分割压缩(如 syslog.1.gz
),需特殊处理:
- 查看压缩日志:
zcat /var/log/syslog.1.gz # 直接显示 zgrep "error" /var/log/syslog.2.gz # 在压缩文件中搜索
- 轮转配置:
配置文件位于/etc/logrotate.conf
,自定义规则在/etc/logrotate.d/
。
图形化工具(可选)
gnome-logs
:GNOME 桌面环境的日志查看器。- Web 工具:如 ELK Stack(Elasticsearch, Logstash, Kibana)用于大型日志分析。
注意事项
- 权限问题:普通用户可能无法读取部分日志,需用
sudo
提权。 - 日志安全:避免泄露敏感信息(如
auth.log
包含登录IP)。 - 磁盘空间:定期清理旧日志(如
logrotate
自动管理)。 - 服务差异:
- 旧版系统(SysVinit)使用
/var/log/messages
。 - 新版(Systemd)优先用
journalctl
。
- 旧版系统(SysVinit)使用
- 基础查看:
tail -f
(实时)、less
(分页)、grep
(过滤)。 - 系统日志:
/var/log/
目录 +journalctl
(Systemd 系统)。 - 进阶分析:组合命令(如
tail | grep
)、字段提取(awk
)。
掌握这些方法,可快速定位系统故障、入侵痕迹或应用异常。
引用说明基于 Linux 核心工具(如 GNU Coreutils, Systemd)的官方文档及社区最佳实践,适用于主流的 Debian/Ubuntu、RHEL/CentOS 发行版,命令示例已在 Ubuntu 22.04 和 CentOS 9 环境中验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5069.html