• 日志分析常用指令简单介绍


    大型分布式网站架构设计与实践的第四章的简单回顾

    日志分析常用的指令:

    1. 查看文件的内容:cat,(适合日志文件比较大)cat –n install.log (-n表示显示行号)
    2. 分页显示文件:more,(cat缺少交互,只能用来查看,more可以更好的用来分页显示文件,Enter显示下一行,空格键显示下一页,按F键显示下一屏,B返回上一屏内容)  less是more更强大的交互工具
    3. 显示文件尾:tail,    tail  -n install.log (-n表示显示最后的行数) (-f 表示tail程序不退出,新写入的行会实时显示出来)
    4. 显示文件头:head,      head  -n install.log(-n表示显示最开始的行数)
    5. 内容排序 :sort ,  sort  –k  2  –t  ‘  ’  -n  -r  install.log (-k用来指定排序的列,这里指定的是第二列,-t用来指定列分隔符,这里的分隔符是空格,-n表示按照数字顺序排序,-r表示按照逆序排列)
    6. 字符统计:wc,  -l用来统计文件中的行数,-w用来统计文件中单词数,-c用来统计文件中的字节数,-L用来统计文件中最长的行的长度
    7. 查看重复出现的行:uniq,用来显示文件中行重复的次数,或者显示仅出现一次的行,或者仅显示重复出现的行,并且uniq的去重针对的只是连续的两行,因此常常与sort结合起来用,sort install.log | uniq –c (uniq去重显示,-c在每一行前面加上该行出现的次数,-u仅显示出现一次的行,-d仅显示重复的行)
    8. 字符串查找:grep, grep qq install.log (qq就是要匹配的字符串,-c统计匹配的行数,支持正则表达式查找)
    9. 文件查找:find,locate,whereis,which,find . –name install.log(find查找的当前路径下的名字为install.log的文件,find进行的是磁盘查找,locate是根据每个文件对应的数据库中的路径进行查找,whereis也是针对的文件对应的数据库中的路径进行查找,不过对应的二进制,which是根据系统环境变量路径查找)
    10. 表达式求值:expr,expr后面加上表达式就可以计算结果,不过*需要就进行转义,shell不识别*
    11. 归档文件:tar,-f指定包的名称,-c生成新的包,-t列出包里面的文件的名称
    12. URL访问工具:curl,
    13. 查看请求的访问量:                                                         如访问量排名前10的IP地址:                                                cat access.log | cut –f1 –d “ “ | sort | uniq –c | sort –k 1 –n –r | head -10                  页面的访问量排名前十url:                                                          cat access.log | cut –f4 –d “ ” | sort | uniq –c | sort –k 1 –n –r | head -10
    14. 查看最耗时的页面:cat access.log | sort –k -2 –n –r | head -10
    15. 统计404请求的占比:使用awk指令 export total_line=’wc –l access.log |cut –f1 –d “ “’ &&export not_found_line=’awk ‘$6==’404’{print $6}’ access.log | wc –l’ && expr &not_found_line *  100 / $tatoal_line

    日志分析脚本:

    1. sed编辑器:sed,sed是流编辑器,并且sed并不会修改文件本身,除非使用重定向存储文件,所以sed是比较安全的。                                                 sed  “s/xxx/yahoo/”  access.log | head -10(s表示把旧的字符串xxx替换成新的yahoo) sed  -n “2,6p” access.log (-n表示只输出指定的行,2,6p表示打印第二行到第六行之间的行)                                                                   sed “/qq/d” access.log(d表示文件的删除行指令,将包含qq的行删掉)               sed “=” access.log (=用来显示文本的行号)                                      sed –e “ihead” access.log (i用来在行首插入内容,ihead在每行前面都插入head)     sed –e “aend” access.log(a用来在行尾追加内容,aend表示在每行后面追加end)      sed –e “/google/chello” access.log(c替换操作,查找包含google的行,用hello替换)     sed –n “1,5p;1,5=” access.log(把多行指令合并,用分号隔开,打印一到五行,并显示行号) sed –n –f test access.log还可以把指令写到文件里(指令都写到了test文件,用-f指定)
    2. awk程序,可以提供一种编程语言来进行查询                                              awk  ‘{print $1}’ access.log(print用来格式化输出,支持转义字符,$1表示第一列)            awk ‘/google/{print $5,$6}’ access.log | head -10(包含google行,然后打印他的第五、六列)  awk ‘length($0)>40 {print $3}’ access.log | head -10  $0表示当前行,length($0)用来获取当前行的长度,然后打印出符合条件的行的第三列      也可对内容格式化输出,也可以将awk程序写到文件里
    3. shell
  • 相关阅读:
    DIY 作品 及 维修 不定时更新
    置顶,博客中所有源码 github
    openwrt PandoraBox PBR-M1 极路由4 HC5962 更新固件
    使用 squid 共享 虚拟专用网至局域网
    第一次参加日语能力测试 N5
    libx264 libfdk_aac 编码 解码 详解
    开发RTSP 直播软件 H264 AAC 编码 live555 ffmpeg
    MFC Camera 摄像头预览 拍照
    http2 技术整理 nginx 搭建 http2 wireshark 抓包分析 server push 服务端推送
    plist 图集 php 批量提取 PS 一个个切
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/5460953.html
Copyright © 2020-2023  润新知