zoukankan      html  css  js  c++  java
  • Linux常用的日志分析命令与工具

    >>基础命令

    操作

    命令

    说明

    查看文件的内容

    cat -n access.log

    -n显示行号

    分页显示文件

    more access.log

    Enter下一行,空格下一页,F下一屏,B上一屏

    分页显示文件

    less access.log

    输入 /字符串 可查找并高亮

    显示文件尾

    tail -n2 -f access.log

    -n2显示最后2行,-f继续监听不退出

    内容排序

    sort -k 2 -t ' ' -n access.log

    -k指定排序列,-t指定列分隔符,-n按数字顺序

    字符统计

    wc -l access.log

    -l统计行数,-c字符数,-L最长行长度,-w单词数

    查看重复出现的行

    sort testfile | uniq -c -d

    uniq去重,-c统计重复次数,-d只显示重复的

    字符串查找

    grep 'G.*T' access.log

    查找G开头T结尾的字符串

    文件查找

    find /home/java -name access.log

    递归/home/java的子目录找名为access.log

    表达式求值

    expr 10 * 3

    计算10*3,其中*表示转义*不解读为通配符

    表达式求值

    expr length "this is a test"

    计算长度

    归档文件

    tar -cf aaa.tar f1 f2

    -c创建,-f指定包名

    归档文件

    tar -xf aaa.tar

    -x解压

    URL访问

    curl www.google.com

    不带参返回响应体,-i返回带响应头,-I仅返回响应头

    查看CPU的load

    uptime

    查看CPU使用率

    top | grep Cpu

    按1查看每个核,按shift+H按线程查看

    查看CPU使用率

    top -p 2864

    查看指定进程

    磁盘剩余空间

    df -h

    磁盘剩余空间

    du -d 1 -h /home/java

    分析目录的磁盘使用。-d设置递归深度

    网络traffic

    sar -n DEV 1 1

    DEV查看各个网卡,1秒抽样,1总共取一次

    磁盘I/O

    iostat -d -k

    内存使用

    free -m

    通常是看“-/+ buffers/cache”对应的used和free

    内存使用

    vmstat

    查看swap I/O

    >>sed编辑器

     

    操作

    命令

    说明

    文本替换

    sed 's/xxx/yahoo/' access.log | head -10

    不会修改原文件

    输出指定的行

    sed -n '2,6p' access.log

    输出2-6行

    删除行

    sed '/qq/d' access.log

    /d排除含关键字qq的行

    整行替换

    sed -e '/google/chello' access.log | head -10

    /c替换的是整个匹配的行

    多个命令合并

    sed -n '1,5p;1,5=' access.log

    边打印行边打印行号

     

    >>awk程序

    操作

    命令

    筛选行,打印指定列

    awk '/google/{print $0,$6}' access.log | head -10

    按条件打印

    awk 'length($0)>40{print $3}' access.log | head -10

    格式化输出

    awk '{line= sprintf("method:%s,response:%s", $3, $7); print line}' access.log | head -10

     

    >>典型的日志分析场景

    (1)统计一个文本中包含字符个数

    cat access.log |grep /2012/ |wc -l
    cat access.log |grep "/message/publishmsg/|/message/publish/" >test1.log

    (2)查看当天访问排行前10的url
    cat access.log | grep “10/Dec/2010″ | awk ‘{print $7}’ | sort | uniq -c | sort -nr | head -n 10

    (3)查看apache的进程数

    ps -aux | grep httpd | wc -l

    (4)访问量前10的IP

    cat access.log | cut -f1 -d " " | sort | uniq -c |sort -k 1 -n -r | head -10
    cut部分表示取第1列即IP列,取第4列则为URL的访问量

    (5)查看最耗时的页面

    cat access.log | sort -k 2 -n -r | head -10
    按第2列响应时间逆序排序

    (6)统计404请求的占比

    总请求数 export total_line= `wc -l access.log | cut -f1 -d " "`
    404请求数 export not_found_line= `awk '$6=='404'{print $6}' access.log | wc -l`
    占比 expr $not_found_line * 100 / $total_line &&或;可合并为一行。

    (7)使用grep查找文件中指定字符出现的次数

    grep -o '目标' test.txt | wc -l
    -o 指示grep显示所有匹配的地方,并且每一个匹配单独一行输出。这样只要统计输出的行数就可以知道这个字符出现的次数了。

     

  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/binyue/p/3608061.html
Copyright © 2011-2022 走看看