grep
过滤关键词、tail -f
实时追踪、less
分页查看,核心日志存储在/var/log/
目录(如syslog/messages),结合journalctl
可查看systemd服务日志。Linux日志的存储位置
Linux日志通常存储在/var/log
目录下,常见日志文件包括:
- 系统日志:
/var/log/syslog
(Ubuntu/Debian)或/var/log/messages
(CentOS/RHEL) - 认证日志:
/var/log/auth.log
(记录登录、sudo操作) - 内核日志:
/var/log/kern.log
- 应用日志:如Nginx(
/var/log/nginx/
)、Apache(/var/log/apache2/
) - 系统服务日志:使用
journalctl
管理的服务日志(Systemd系统)
基础查询命令
实时查看日志(动态跟踪)
tail -f /var/log/syslog # 实时跟踪文件末尾变化 journalctl -f -u nginx.service # 实时跟踪Nginx服务日志
场景:监控服务启动错误或实时攻击检测。
关键词过滤(grep)
grep "error" /var/log/syslog # 搜索包含"error"的行 grep -i "connection refused" /var/log/nginx/access.log # 忽略大小写搜索 grep -C 5 "fail" /var/log/auth.log # 显示匹配行前后5行(上下文)
技巧:-A 3
(显示匹配后3行)-B 2
(显示匹配前2行)
分页查看
less /var/log/messages # 支持上下翻页、搜索(按`/`输入关键词) more /var/log/kern.log # 逐页显示(空格翻页)
时间范围查询
# 查询最近2小时内的日志 journalctl --since "2 hours ago" -u apache2 # 指定时间区间(格式:YYYY-MM-DD HH:MM:SS) journalctl -S "2025-10-01 09:00:00" -U "2025-10-01 10:00:00"
高级查询技巧
组合命令(管道符)
cat /var/log/syslog | grep "error" | less # 过滤错误并分页显示 tail -100 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c # 统计最近100条日志的IP访问频次
按时间排序与提取
# 提取指定时间段的日志(如10:00-11:00) awk '/Oct 10 10:00:/,/Oct 10 11:00:/' /var/log/syslog # 使用sed提取特定时间段 sed -n '/Oct 10 10:00:/,/Oct 10 11:00:/p' /var/log/auth.log
日志统计与分析
# 统计错误出现次数 grep -c "error" /var/log/syslog # 分析HTTP状态码(Nginx日志) awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c
Systemd服务日志(journalctl)
journalctl -u mysql.service # 查看MySQL服务日志 journalctl -p err..alert # 过滤错误及以上级别日志 journalctl --disk-usage # 检查日志占用的磁盘空间
常见场景案例
场景1:快速定位服务启动失败原因
journalctl -u docker.service --since "5 min ago" | grep -i "fail"
场景2:排查SSH暴力破解
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
场景3:分析高流量IP(Nginx)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
注意事项
- 权限问题:
普通用户可能无权查看系统日志,需用sudo
提权(如sudo less /var/log/syslog
)。 - 日志轮转:
日志文件可能被压缩(如*.gz
),使用zcat
或zgrep
查询:zgrep "error" /var/log/syslog.1.gz
- 安全性:
- 避免直接修改日志文件。
- 敏感日志(如
/var/log/secure
)应限制访问权限(chmod 600
)。
- 日志管理工具:
大型系统建议使用ELK
(Elasticsearch, Logstash, Kibana)或Graylog
集中管理日志。
掌握Linux日志查询是运维的基础技能,核心步骤包括:
- 定位日志路径 → 2. 选择命令(
grep
/journalctl
等)→ 3. 组合过滤(时间、关键词)→ 4. 分析结果。
对于复杂场景,可结合awk
、sed
进行高级处理,定期清理日志(如logrotate
)可避免磁盘占满。
引用说明参考Linux官方文档(kernel.org)、GNU Coreutils手册及Systemd开发者手册(freedesktop.org),确保方法通用性及准确性,具体命令请以实际系统环境为准。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/36635.html