当前位置: 首页 > 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


写在最后

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


http://www.xdnf.cn/news/170875.html

相关文章:

  • Python爬虫实战:获取网yi云音乐飙升榜的歌曲数据并作分析,为歌单推荐做参考
  • Spark SQL核心概念与编程实战:从DataFrame到DataSet的结构化数据处理
  • 《一键式江湖:Docker Compose中间件部署108式》开篇:告别“配置地狱”,从此笑傲云原生武林!》
  • python+adafruit_pca9685 测试舵机存储当前角度
  • 知识体系_数据量纲化处理方式
  • PWN基础-利用格式化字符串漏洞泄露canary结合栈溢出getshell
  • 神经网络笔记 - 神经网络
  • 东田数码科技前端面经
  • 运算符分为哪几类?哪些运算符常用作判断?简述运算符的优先级
  • 电池的寿命
  • 参数规模:衡量大语言模型体量的标尺
  • 【Java面试笔记:进阶】23.请介绍类加载过程,什么是双亲委派模型?
  • NEPCON China 2025 | 具身智能时代来临,灵途科技助力人形机器人“感知升级”
  • Spring MVC深度解析:从原理到实战
  • 进程与线程-----C语言经典题目(8)
  • Net版本Spire.doc 最新版去水印
  • OpenCV进阶操作:图像金字塔
  • Django(快速上手版)
  • IDEA中使用Git
  • 物联网相关
  • 【仿Mudou库one thread per loop式并发服务器实现】服务器边缘测试+性能测试
  • 强制缓存vs协商缓存
  • pycharm无法创建venv虚拟环境
  • Web安全:威胁解析与综合防护体系构建
  • 快速排序及其在Unity游戏开发中的应用
  • Node.js API 安全的主要策略:最佳实践
  • 面试记录1-春招补录0427
  • 【Hive入门】Hive基础操作与SQL语法:DML操作全面解析
  • FastAPI + Redis Pub/Sub + WebSocket 组合解决方案的详细介绍
  • Reverse-WP记录6