当前位置: 首页 > news >正文

Linux日志处理命令多管道实战应用

全文目录

    • 1 日志处理
      • 1.1 实时日志分析
        • 1.1.1 nginx日志配置
        • 1.1.2 nginx日志示例
        • 1.1.3 日志分析示例
      • 1.2 多文件合并分析
      • 1.3 时间范围日志提取
    • 2 问题追查
      • 2.1 进程级问题定位
      • 2.2 网络连接排查
      • 2.3 硬件故障追踪
    • 3 数据统计
      • 3.1 磁盘空间预警
      • 3.2 进程资源消耗排名
      • 3.3 HTTP状态码统计
    • 4 高级组合技巧
      • 4.1 TCP连接状态分析
      • 4.2 日志时间戳转换
      • 4.3 多条件文件清理
    • 5 参考文献


写在前面

前面的博文详细梳理了《Linux日志处理命令完全解构 》和《从零开始掌握Linux数据流:管道与重定向完全指南》,从各个单一命令的原理介绍再到数据流如何在命令之间进行输入和输出,今天终于可以把前面的内容进行综合应用,来完成本篇关于日志处理实战应用的整理。
本文重点介绍几种实战中常用的利用管道来整合多命令达成预期处理效果的实战应用,希望能够给读者带来帮助。


1 日志处理

1.1 实时日志分析

1.1.1 nginx日志配置
http {log_format main '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent ''"$http_referer" "$$http_user_agent" ''"$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;
}
1.1.2 nginx日志示例
192.168.1.100 - - [27/Apr/2025:15:30:45 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" "-"
192.168.1.100 - - [27/Apr/2025:15:30:45 +0800] "GET /index1.html HTTP/1.1" 500 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" "-"
192.168.1.100 - - [27/Apr/2025:15:30:45 +0800] "GET /index2.html HTTP/1.1" 500 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" "-"
192.168.1.100 - - [27/Apr/2025:15:30:45 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" "-"
192.168.1.100 - - [27/Apr/2025:15:30:45 +0800] "GET /index.html HTTP/1.1" 400 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" "-"
192.168.1.100 - - [27/Apr/2025:15:30:45 +0800] "GET /index2.html HTTP/1.1" 502 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" "-"
192.168.1.100 - - [27/Apr/2025:15:30:45 +0800] "GET /index1.html HTTP/1.1" 504 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" "-"
1.1.3 日志分析示例
  • 动态跟踪Nginx日志,统计500错误的请求路径出现次数
tail -f access.log | grep ' 500 ' | awk '{print $7}' | sort | uniq -c
  • 统计近1000条日志,输出请求路径访问次数最多的三个
tail -n 1000 access.log | awk '{print $7}' | sort -nr | uniq -c | head ‐3
  • 统计某一时刻,504 错误访问的URL及远程id
grep "2025:15:30" access.log | awk -F' ' '$9==504 {print $1,$7}'| sort | uniq -c | sort -nr

1.2 多文件合并分析

  • 合并多个日志文件,统计非本机IP的访问量TOP20
cat access.log* | grep -v '127.0.0.1' | awk '{print $1}' | sort | uniq -c | sort -nr | head -20

1.3 时间范围日志提取

  • 提取MySQL服务在指定时间段内的死锁日志(显示上下文3行)
journalctl --since "2025-04-25 09:00" --until "2025-04-25 12:00" -u mysql | grep -C3 'deadlock'

2 问题追查

2.1 进程级问题定位

  • 通过进程名定位PID,查询相关进程打开的文件描述符(处理过程:过滤进程→提取PID→查看文件句柄)
ps aux | grep nginx | awk '{print $2}' | xargs -I{} lsof -p {}

2.2 网络连接排查

  • 筛选80端口监听状态,格式化输出结果(处理过程:过滤监听状态→匹配端口→表格排版)
netstat -tulnp | awk '$6=="LISTEN" && $4~":80$"' | column -t
  • 统计网络连接情况
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' # TCP连接统计返回结果示例:
LAST_ACK 7
SYN_RECV 33
ESTABLISHED 159
FIN_WAIT1 51
FIN_WAIT2 90
TIME_WAIT 107解释说明:
SYN_RECV:表示正在等待处理的请求数
ESTABLISHED:表示正常数据传输状态
TIME_WAIT:表示处理完毕,等待超时结束的请求数

2.3 硬件故障追踪

  • 分析内核日志中错误信息,按设备名统计异常次数(处理过程:过滤错误→提取设备标识→统计频次)
dmesg -T | grep -i error | awk -F'[: ]' '{print $1,$3}' | sort | uniq -c

3 数据统计

3.1 磁盘空间预警

  • 检测磁盘使用超80%的分区,邮件通知管理员
df -h | awk '+$5 > 80 {print $6,$5}' | column -t | mail -s "Disk Alert" zhangsan@example.com

在这里插入图片描述

3.2 进程资源消耗排名

  • 显示当前运行的进程信息,包括进程ID、父进程ID、命令名称、内存使用百分比和CPU使用百分比,并按内存使用百分比降序排列,显示前10条结果
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 10 | awk 'NR>1 {print $1,$4}'

在这里插入图片描述

3.3 HTTP状态码统计

  • 统计日志中不同HTTP状态码出现次数(处理过程:提取状态码→排序计数→格式化输出)
awk '{print $9}' access.log | sort | uniq -c | awk '{printf "状态码%s: %d次\n",$2,$1}'

4 高级组合技巧

4.1 TCP连接状态分析

  • 统计已建立连接的远程端口分布
ss -tunap | awk '{print $1,$5}' | grep 'ESTAB' | awk -F':' '{print $2}' | sort | uniq -c|sort -nr

在这里插入图片描述

4.2 日志时间戳转换

  • 将日志中的时间转换为Unix时间戳便于分析
grep 'ERROR' app.log | awk '{print $1,$2}' | xargs -I{} date -d "{}" +%s

4.3 多条件文件清理

  • 删除30天前且大于100MB的日志文件
find /logs -name "*.log" -mtime +30 -exec du -sh {} + | awk '$1 > 100M {print $2}' | xargs rm -vf

5 参考文献

文献1|文献2|文献3


写在最后

以上有限的例举了一些常用的组合式方法和命令来解决一些实际工作中的问题,这里仅是抛砖引玉,给读者一个认知上的拓展,并不能梳理的特别全面,根据遇到的实际情况,需要做灵活调整,已达成预期的效果。如果对你有帮助,欢迎点赞和收藏,如有任何问题,也欢迎评论指正,一起加油!


相关文章:

  • 【Redis】Redis Zset实现原理:跳表+哈希表的精妙设计
  • 使用PHP对接印度股票市场数据
  • 基于c++的LCA倍增法实现
  • 【博客系统】博客系统第二弹:实现博客列表接口(在 Service 层重新封装 Mapper 层返回结果,避免实体类所有字段都向前端返回)、SimpleDateFormat 类的使用方法
  • 【RabbitMQ消息队列】详解(一)
  • Linux系统类型及常用操作命令总结
  • 第三方软件检测报告:热门办公软件评估及功能表现如何?
  • 电力系统失步解列与振荡解析
  • Java 内存泄漏 详解
  • 【AI提示词】领导力教练
  • 4.2.1 MYSQL语句,索引,视图,存储过程,触发器
  • 第十三步:vue
  • 【PVR】《Adaptive Palm Vein Recognition Method》
  • React Testing Library
  • Java学习手册:开发 Web 网站要知道的知识
  • T检验、F检验及样本容量计算学习总结
  • 2025第16届蓝桥杯省赛之研究生组D题最大数字求解
  • 学习spark总结
  • 常见锁策略
  • 关系型数据库PostgreSQL vs MySQL 深度对比:专业术语+白话解析+实战案例
  • 第二艘国产大型邮轮实现坞内起浮,重点强化邮轮供应链本土化建设
  • 视觉周刊|2025上海车展的科技范
  • 从“网点适老化”到“社区嵌入式”,“金融为老上海模式”如何探索?
  • 央视曝光假进口保健品:警惕!保税仓发货不等于真进口
  • 俄联邦安全局:俄军高级官员汽车爆炸案嫌疑人已被捕
  • “冲刺万亿城市”首季表现如何?温州领跑,大连GDP超徐州