插件窝 干货文章 linux日志查询常用命令

linux日志查询常用命令

日志 log var bash 707    来源:    2025-04-03

在Linux系统中,日志查询是系统管理和故障排查的重要技能。以下是常用的日志查询命令和技巧:


1. 核心日志文件位置

  • /var/log/messages:通用系统日志(CentOS/RHEL)
  • /var/log/syslog:通用系统日志(Debian/Ubuntu)
  • /var/log/auth.log:认证相关日志(如SSH登录)
  • /var/log/kern.log:内核日志
  • /var/log/dmesg:硬件和启动日志(内核环形缓冲区)
  • /var/log/nginx//var/log/apache2/:Web服务日志

2. 基础命令

tail - 查看日志尾部

tail -n 20 /var/log/syslog      # 查看最后20行
tail -f /var/log/nginx/access.log  # 实时追踪日志(常用!)

head - 查看日志头部

head -n 10 /var/log/syslog      # 查看前10行

cat - 显示完整日志(小文件)

cat /var/log/boot.log           # 显示全部内容(慎用于大文件)

less/more - 分页查看

less /var/log/syslog            # 支持搜索(按 `/` 输入关键词)
more /var/log/syslog            # 基本分页

3. 过滤与搜索

grep - 关键词过滤

grep "error" /var/log/syslog           # 搜索包含"error"的行
grep -i "timeout" /var/log/nginx/error.log  # 忽略大小写
grep -A 3 -B 2 "fail" /var/log/messages # 显示匹配行及前后内容

journalctl - Systemd日志查询(现代Linux发行版)

journalctl -u nginx.service      # 查看Nginx服务日志
journalctl -f                   # 实时追踪日志
journalctl --since "2024-01-01" --until "2024-01-02"
journalctl -p err -b            # 本次启动的错误日志

4. 高级工具

awk - 提取特定字段

awk '/Failed password/ {print $11}' /var/log/auth.log  # 提取SSH失败IP

sed - 流编辑器

sed -n '/Jan 10 14:00/,/Jan 10 15:00/p' /var/log/syslog  # 提取时间范围日志

cut - 按列分割

cut -d' ' -f1,5 /var/log/nginx/access.log  # 提取IP和请求路径

logrotate - 日志轮转

logrotate -vf /etc/logrotate.conf  # 手动触发日志轮转

5. 组合命令示例

# 统计Nginx访问日志中TOP 10的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

# 实时监控SSH登录失败
tail -f /var/log/auth.log | grep "Failed password"

# 查找最近1小时修改过的日志文件
find /var/log -type f -mmin -60 -name "*.log"

6. 日志分析工具推荐

  • logwatch:自动生成日志摘要报告
  • goaccess:实时Web日志分析(支持HTML可视化)
  • ELK Stack(Elasticsearch+Logstash+Kibana):企业级日志分析平台

注意事项

  1. 需要root权限查看部分日志(如/var/log/secure)。
  2. 大日志文件建议用lessgrep过滤,避免直接cat
  3. 定期清理日志(如/dev/null > /var/log/syslog)。

掌握这些命令后,你可以高效定位系统问题、分析服务异常或监控安全事件。