• 常用的shell命令


    shell本身是非常强大的,而工程师在追查线上问题时,如何能够更加快速更加有效的定位问题,用好shell非常关键。下面是我总结的几个在追查问题时常用的shell命令。大家可以参考下。大家有好的命令,也可以在这之上完善。

    1、日志分析类:

    (1)

    cut -d ‘’ -f4 wap_log |sort |uniq -c

    比如cpu idle急剧下降,要看一下当前的流量如何,是否是由于流量突增引起。可以使用该命令:

    其中wap_log是日志名,4 是时间那一列,简单介绍下这个shell命令。

    这是一行实例日志行:

    218.203.63.190 - - [09/Feb/2012:12:15:03 +0800] "GET /view/102795.html HTTP/1.1" 200 4557 "-" "MAUI WAP Browser" "jid=XKYGPzLXwG!70061790;$path=/" 76

    在这个shell命令中,cut先根据空格分隔符对日志行进行分割,然后取第4个field,也就是时间,取到时间后,对时间进行排序,排序后,再去重,计数。这样就可以输出每个时间段的日志浏览量。

    下面是改shell的输出实例:

    18 [09/Feb/2012:12:54:51

    14 [09/Feb/2012:12:54:52

    11 [09/Feb/2012:12:54:53

    10 [09/Feb/2012:12:54:54

    12 [09/Feb/2012:12:54:55

    15 [09/Feb/2012:12:54:56

    11 [09/Feb/2012:12:54:57

    第一列是个数,第二列是时间,当然,也可以针对于这个在后面再用awk任意发挥,比如找出浏览量大于x的时间段,等等。这样就可以清楚的看到,每个时间点的请求数,从而判定是否是请求数过大导致。

    (2)

    cat access_log |awk  'BEGIN{sum=0;count=0;}{sum+=$NF;count++;}END{printf("sum=%d,count=%d,avg=%f\n",sum,count, sum/count)}'

    access_log为日志名,用awk切割后,$NF为最后一个域,就是耗时域,所以这条命令的作用就是计算平均耗时。

    下面是该shell的实例输出:

    sum=3121224,count=96000,avg=32.512750

    2、性能分析类:

    (1)

    ps aux | sort –n –k 5 | tail

    得到耗内存最大的10个进程。

    ps aux 就不用解释了,后面sort,-n代表按照数字大小进行排序,-k代表排序的key  6 代表第6列,第6列就是占用内存大小列。

    下面是输出:

    **     11800  0.0  0.0 261652 49316 ?      S     2011   3:32 **.

    **     11801  0.0  0.0 261652 49316 ?      S     2011   3:33 **.

    **    11802  0.0  0.0 261652 49316 ?      S     2011   3:33 **.

    **    11803  0.0  0.0 261652 49316 ?      S     2011   3:33 **.

    **     11804  0.0  0.0 261652 49316 ?      S     2011   3:33 **.

    **    11805  0.0  0.0 261652 49316 ?      S     2011   3:32 **.

    **     25511  0.0  0.0 261652 49316 ?      S     2011   1:15 **.

    **    25512  0.0  0.0 261652 49316 ?      S     2011   0:00 **.

    **     28391  1.4  0.5 547488 369664 ?     Ssl  Jan16 501:58 **

    (**为用户名和进程名,已隐藏。)

    (2)

    ps aux | sort –n –k 4 | tail

    同理,这是得到cpu消耗最大的10个进程

    (3)

    lsof

    当然lsof不属于性能分析类,但是该命令又经常会用到:

    lsof filename

    显示开启filename这个文件的进程名

    lsof –i:8099

    查看开启8099端口的进程

    (4)

    netstat

    查找端口的进程名除了用lsof外,也可以用netstat,

    直接netstat –nlp | grep port即可

    不过一般只有root权限才可以用lsof,普通用户的话,可以使用/usr/sbin/lsof 不过一般没有太多有价值的信息。

    3、其他类:

    (1)rsync命令

    rsync命令一般用来和线上机同步代码,那他和scp有什么不同呢? 一个是rsync命令可以方便的exclude,scp无法方便的exclude.另外,有一个很重要的不同是,rsync可以保持软链,但scp不能保持软链。就是说,scp在执行过程中,不会识别软链,而是直接当做普通文件夹来处理。另外,比较重要的是,rsync为增量同步,scp为全量

    一般同步命令如下:

    rsync -av –bwlimit=2000 –progress –exlude=”log” 源地址  目标地址

    -av这个参数大家可以到网上搜下,这里就不再详解了,av这个参数,如果没有特殊需求,就把这个参数带上。

    --bwlimit是限速,单位是kb

    --progress代表是显示同步进度

    --exclude代表,不同步的文件夹,这个文件夹是基于源地址的,也就是说比如exclude写的是log,源地址写的是/home/xx/ 那么,不同步的文件夹就是/home/xx/log。

    好,对于shell命令,我就先写这么多,大家也可以基于这些命令自由发挥,拼接出更有价值的命令。

    本文来自于 http://www.log4myself.info/archives/78

    03 2012 档案

     
    摘要: shell本身是非常强大的,而工程师在追查线上问题时,如何能够更加快速更加有效的定位问题,用好shell非常关键。下面是我总结的几个在追查问题时常用的shell命令。大家可以参考下。大家有好的命令,也可以在这之上完善。1、日志分析类:(1)cut -d ‘’ -f4 wap_log |sort |uniq -c比如cpu idle急剧下降,要看一下当前的流量如何,是否是由于流量突增引起。可以使用该命令:其中wap_log是日志名,4 是时间那一列,简单介绍下这个shell命令。这是一行实例日志行:218.203.63.190 - - [09/Feb/2012:12:15:03 +0800] &阅读全文
    posted @ 2012-03-29 11:55 clam 阅读(311) | 评论 (0) 编辑
     
    摘要: 一直以来,对于mysql的query_cache,在网上就流行着这样的说法,“对于mysql的query_cache键值就是mysql的query,所以,如果在query中有任何的不同,包括多了个空格,都会导致mysql认为是不同的查询”,其实,这一种说法是不完全正确的。首先第一点,mysql的query_cache的键值并不是简单的query,而是query加databasename加flag。这个从源码中就可以看出。在这里不做重点描述,后续可以针对于这一点再具体分析。重要的是第二点,是不是加了空格,mysql就认为是不同的查询呢?实际上这个是要分情况而言的,要看这个空格加在哪。 如果空格是阅读全文
    posted @ 2012-03-29 11:54 clam 阅读(347) | 评论 (0) 编辑
     
    摘要: 最近在公司一直在做diff的事情,对于文本的diff。因为一开始维基百科实现文字的diff做得比较不错,所以就调研了下mediawiki的diff实现,但发现mediawiki默认只能diff到行的级别,如果要diff到汉字的级别,是需要更改代码的。所以我就改了该mediawiki的代码,发现可以得到相应的效果。 但待我继续追踪代码发现,其实mediawiki的diff实现并不是很优雅,当然我...阅读全文
    posted @ 2012-03-29 11:53 clam 阅读(3) | 评论 (0) 编辑
  • 相关阅读:
    Net Remoting(应用程序域)
    C# 方便的复制/比较物件内数据的方法(Object Copy / Compare)
    c# 序列化
    Windows Phone 7 开发日志(初试一、随便研究)
    关于Windows Phone 7推广策略的失误
    vb 托盘图标
    vb code中调用exe文件,当关闭的时候直接关闭文件.
    调用INI文件
    使用SQL的JOB调用DTS定制任务!
    给Word设置目录
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2423862.html
Copyright © 2020-2023  润新知