Linux-监控命令

 

linux下监控命令

top、uptime、free

 

统计相关命令

stat、dstat

ifstat、iostat

netstat、nicstat

mpstat、pidstat、vmstat

lsof、tcpdump、sar

 

其他

arp、arping、traceroute

strace

nethogs [eth1]   查看网络流量

nslookup、dig

 

 

 

 

 

top

top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60, 0.48
Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3% us,  1.0% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    191272k total,   173656k used,    17616k free,    22052k buffers
Swap:   192772k total,        0k used,   192772k free,   123988k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1379 root      16   0  7976 2456 1980 S  0.7  1.3   0:11.03 sshd
14704 root      16   0  2128  980  796 R  0.7  0.5   0:02.72 top
1 root      16   0  1992  632  544 S  0.0  0.3   0:00.90 init
2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0

统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48    当前时间
up 1:22    系统运行时间,格式为时:分
1 user    当前登录用户数
load average: 0.06, 0.60, 0.48    系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s): 
0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0%hi:硬件CPU中断占用百分比
0.0%si:软中断占用百分比
0.0%st:虚拟机占用百分比

最后两行为内存信息。内容如下:

Mem:
191272k total    物理内存总量
173656k used    使用的物理内存总量
17616k free    空闲内存总量
22052k buffers    用作内核缓存的内存量
Swap: 
192772k total    交换区总量
0k used    使用的交换区总量
192772k free    空闲交换区总量
123988k cached    缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

 

进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号  列名    含义
a    PID     进程id
b    PPID    父进程id
c    RUSER   Real user name
d    UID     进程所有者的用户id
e    USER    进程所有者的用户名
f    GROUP   进程所有者的组名
g    TTY     启动进程的终端名。不是从终端启动的进程则显示为 ?
h    PR      优先级
i    NI      nice值。负值表示高优先级,正值表示低优先级
j    P       最后使用的CPU,仅在多CPU环境下有意义
k    %CPU    上次更新到现在的CPU时间占用百分比
l    TIME    进程使用的CPU时间总计,单位秒
m    TIME+   进程使用的CPU时间总计,单位1/100秒
n    %MEM    进程使用的物理内存百分比
o    VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p    SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
q    RES     进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r    CODE    可执行代码占用的物理内存大小,单位kb
s    DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t    SHR     共享内存大小,单位kb
u    nFLT    页面错误次数
v    nDRT    最后一次写入到现在,被修改过的页面数。
w    S       进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
x    COMMAND 命令名/命令行
y    WCHAN   若该进程在睡眠,则显示睡眠中的系统函数名
z    Flags   任务标志,参考 sched.h

 

 

 

 

uptime

04:03:58 up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20
  1. 当前时间 04:03:58
  2. 系统已运行的时间 10 days, 13:19
  3. 当前在线用户 1 user
  4. 平均负载:0.54, 0.40, 0.20,最近1分钟、5分钟、15分钟系统的负载

最直接查看系统平均负载的命令

  1. cat /proc/loadavg  

何为系统负载呢?

系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:

它没有在等待I/O操作的结果

它没有主动进入等待状态(也就是没有调用'wait')

没有被停止(例如:等待终止)

一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.

 

 

 

free


  1. 1              total       used       free     shared    buffers     cached  
  2. 2 Mem:      24677460   23276064    1401396          0     870540   12084008  
  3. 3 -/+ buffers/cache:   10321516   14355944  
  4. 4 Swap:     25151484     224188   24927296  

第二行是物理总内存,已经使用的内存,空闲内存,shared是被几个进程共享的内存

buffers是用于存放到输出到磁盘的数据,也就是写缓冲

cached 是从磁盘上读出的数据,也就是读缓冲,这两个都是为了提高IO性能的

第三行内容(-/+ buffers/cache)中个参数如下所示:

(-buffers/cache): 真正使用的内存数,即9392M,他指的是第一部分的 used - buffers - cached

(+buffers/cache): 可用的内存数,即22715M,他指的是第一部分的 free + buffers + cached

第四行就是交换区使用的量和空闲数量

释放掉被系统cache占用的数据

  1. echo 3>/proc/sys/vm/drop_caches  

 

 

 

stat

  1. stat zzz.sh   
  2.   File: 鈥榸zz.sh鈥?  
  3.                        Size: 140        Blocks: 8          IO Block: 4096   regular file  
  4. Device: fd01h/64769d    Inode: 925359      Links: 1  
  5. Access: (0755/-rwxr-xr-x)  Uid: ( 1000/  deploy)   Gid: ( 1000/  deploy)  
  6. Access: 2017-04-19 12:53:47.832967443 +0800  
  7. Modify: 2017-04-19 12:53:46.692917575 +0800  
  8. Change: 2017-04-19 12:53:46.704918100 +0800  
  9.  Birth: -  

 

 

 

dstat


  1. ----system---- ----total-cpu-usage---- ---load-avg--- -net/total- ------memory-usage----- -dsk/total- ---procs--- ----swap--- --io/total- ---system-- ------sockets------ --filesystem-  
  2.      time     |usr sys idl wai hiq siq| 1m   5m  15m | recv  send| used  buff  cach  free| read  writ|run blk new| used  free| read  writ| int   csw |tot tcp udp raw frg|files  inodes  
  3. 09-05 15:02:33|  0   0 100   0   0   0|0.02 0.05 0.05|   0     0 |6844M  284M 2875M 6046M| 795B   18k|  0   0 0.5|   0     0 |0.04  0.86 | 562  1050 |212 105   6   0   01696  51718   
  4. 09-05 15:02:34|  0   0 100   0   0   0|0.02 0.05 0.05| 638B 2140B|6844M  284M 2875M 6046M|   0    28k|  0   0   0|   0     0 |   0  2.00 | 623  1221 |212 105   6   0   01696  51725   
  5. 09-05 15:02:35|  0   0 100   0   0   0|0.02 0.05 0.05| 562B 1878B|6844M  284M 2875M 6046M|   0     0 |  0   0   0|   0     0 |   0     0 | 619  1201 |212 105   6   0   01696  51725   
  6. 09-05 15:02:36|  0   0 100   0   0   0|0.02 0.05 0.05|1230B 5680B|6844M  284M 2875M 6046M|   0     0 |  0   0   0|   0     0 |   0     0 | 657  1259 |212 105   6   0   01696  51725   
  7. 09-05 15:02:37|  0   0 100   0   0   0|0.02 0.05 0.05| 181B  817B|6844M  284M 2875M 6046M|   0     0 |  0   0   0|   0     0 |   0     0 | 600  1171 |212 105   6   0   01696  51725   
  8. 09-05 15:02:38|  0   0 100   0   0   0|0.02 0.05 0.05|3500B 5296B|6844M  284M 2875M 6046M|   0     0 |  0   0   0|   0     0 |   0     0 | 701  1322 |212 105   6   0   01696  51725   
  9. 09-05 15:02:39|  0   0 100   0   0   0|0.02 0.05 0.05| 638B  722B|6844M  284M 2875M 6046M|   0     0 |  0   0   0|   0     0 |   0     0 | 613  1185 |212 105   6   0   01696  51725   
  10. 09-05 15:02:40|  0   0 100   0   0   0|0.02 0.05 0.05| 164B 1430B|6844M  284M 2875M 6046M|   0     0 |  0   0   0|   0     0 |   0     0 | 610  1187 |212 105   6   0   01696  51725   

cpu-usage中的 user是用户使用cpu百分比,sys是系统使用的,idl是空闲比例

wai是io等待比例,hiq是硬件终端,siq是软件终端

system中的int是中断次数(interrupt)和csw中下文切换(context switch)

procs中的run是运行的,blk是中断的,new是新创建的进程

最后两列显示了socket和文件相关的信息

 

 

 

ifstat


  1. ifstat -tlaT  
  2.   Time            lo                 eth0                pan0               Total         
  3. HH:MM:SS   KB/s in  KB/s out   KB/s in  KB/s out   KB/s in  KB/s out   KB/s in  KB/s out  
  4. 06:27:32      0.00      0.00      0.06      0.28      0.00      0.00      0.06      0.28  
  5. 06:27:33      0.00      0.00      0.06      0.18      0.00      0.00      0.06      0.18  
  6. 06:27:34      0.00      0.00      0.06      0.18      0.00      0.00      0.06      0.18  
  7. 06:27:35      0.00      0.00      0.12      0.22      0.00      0.00      0.12      0.22  

参数

  1. -l 监测环路网络接口(lo)。缺省情况下,ifstat监测活动的所有非环路网络接口。经使用发现,加上-l参数能监测所有的网络接口的信息,而不是只监测 lo的接口信息,也就是说,加上-l参数比不加-l参数会多一个lo接口的状态信息。   
  2. -a 监测能检测到的所有网络接口的状态信息。使用发现,比加上-l参数还多一个plip0的接口信息,搜索一下发现这是并口(网络设备中有一 个叫PLIP (Parallel Line Internet Protocol). 它提供了并口...)   
  3. -z 隐藏流量是无的接口,例如那些接口虽然启动了但是未用的   
  4. -i 指定要监测的接口,后面跟网络接口名   
  5. -s 等于加-d snmp:[comm@][#]host[/nn]] 参数,通过SNMP查询一个远程主机   
  6. -h 显示简短的帮助信息   
  7. -n 关闭显示周期性出现的头部信息(也就是说,不加-n参数运行ifstat时最顶部会出现网络接口的名称,当一屏显示不下时,会再一次出现接口的名称,提示我们显示的流量信息具体是哪个网络接口的。加上-n参数把周期性的显示接口名称关闭,只显示一次)  
  8. -t 在每一行的开头加一个时间 戳(能告诉我们具体的时间)  
  9. -T 报告所有监测接口的全部带宽(最后一列有个total,显示所有的接口的in流量和所有接口的out流量,简单的把所有接口的in流量相加,out流量相 加)   
  10. -w 用指定的列宽,而不是为了适应接口名称的长度而去自动放大列宽   
  11. -W 如果内容比终端窗口的宽度还要宽就自动换行   
  12. -S 在同一行保持状态更新(不滚动不换行)注:如果不喜欢屏幕滚动则此项非常方便,与bmon的显示方式类似   
  13. -b 用kbits/s显示带宽而不是kbytes/s -q 安静模式,警告信息不出现   
  14. -v 显示版本信息   
  15. -d 指定一个驱动来收集状态信息  
 

 

 

iostat

  1. iostat -x  
  2. Linux 3.13.0-86-generic (iZm5efk9snim7x48j1lxwsZ)       05/10/2017      _x86_64_        (4 CPU)  
  3.   
  4. avg-cpu:  %user   %nice %system %iowait  %steal   %idle  
  5.            0.27    0.00    0.11    0.01    0.00   99.61  
  6.   
  7. Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util  
  8. vda               0.00     0.52    0.02    0.79     0.25    11.90    30.14     0.00    5.84   31.75    5.27   0.35   0.03  
  9. vdb               0.00     0.05    0.02    0.08     0.47     6.22   134.86     0.00   34.99    4.23   43.06   1.47   0.01  

字段含义

  1. rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并  
  2. wrqm/s: 每秒对该设备的写请求被合并次数  
  3. r/s: 每秒完成的读次数  
  4. w/s: 每秒完成的写次数  
  5. rkB/s: 每秒读数据量(kB为单位)  
  6. wkB/s: 每秒写数据量(kB为单位)  
  7. avgrq-sz:平均每次IO操作的数据量(扇区数为单位)  
  8. avgqu-sz: 平均等待处理的IO请求队列长度,越短越好  
  9. await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)  
  10. svctm: 平均每次IO请求的处理时间(毫秒为单位)  
  11. %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率  

如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长

 

 

 

netstat

  1. netstat -anpltu  
  2. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      6982/java         
  3. tcp        0      0 0.0.0.0:9527            0.0.0.0:*               LISTEN      17779/java        
  4. tcp        0      0 0.0.0.0:9999            0.0.0.0:*               LISTEN      17779/java        
  5. tcp        0      0 1.2.3.4:56568           5.6.7.8:9042            ESTABLISHED     -                 
  6. tcp        1      0 1.2.3.4:44910           1.2.3.4.5:8080          CLOSE_WAIT      -       

显示tcp和udp的相信统计信息

  1. netstat -tus  
  2. IcmpMsg:  
  3.     InType0: 3  
  4.     InType3: 1  
  5.     InType8: 1  
  6.     OutType0: 1  
  7.     OutType3: 1  
  8.     OutType8: 3  
  9. Tcp:  
  10.     32 active connections openings  
  11.     1 passive connection openings  
  12.     6 failed connection attempts  
  13.     0 connection resets received  
  14.     1 connections established  
  15.     5110 segments received  
  16.     3121 segments send out  
  17.     0 segments retransmited  
  18.     0 bad segments received.  
  19.     7 resets sent  
  20. Udp:  
  21.     41 packets received  
  22.     1 packets to unknown port received.  
  23.     0 packet receive errors  
  24.     42 packets sent  
  25. UdpLite:  
  26. TcpExt:  
  27.     20 TCP sockets finished time wait in fast timer  
  28.     10 delayed acks sent  
  29.     4261 packets header predicted  
  30.     199 acknowledgments not containing data received  
  31.     459 predicted acknowledgments  
  32.     0 TCP data loss events  
  33. IpExt:  
  34.     InBcastPkts: 18  
  35.     InOctets: 6136651  
  36.     OutOctets: 205136  
  37.     InBcastOctets: 1404  

显示路由信息

  1. netstat -r  
  2. Kernel IP routing table  
  3. Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface  
  4. 192.168.186.0   *               255.255.255.0   U         0 0          0 eth0  
  5. default         192.168.186.1   0.0.0.0         UG        0 0          0 eth0  

显示网络界面信息

  1. netstat -i  
  2. Kernel Interface table  
  3. Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg  
  4. eth0       1500   0     5289      0      0      0     3234      0      0      0 BMRU  
  5. lo        16436   0       14      0      0      0       14      0      0      0 LRU  

显示组播信息

  1. netstat -g  
  2. IPv6/IPv4 Group Memberships  
  3. Interface       RefCnt Group  
  4. --------------- ------ ---------------------  
  5. lo              1      all-systems.mcast.net  
  6. eth0            1      all-systems.mcast.net  
  7. lo              1      ff02::1  
  8. eth0            1      ff02::1:ff9c:1fb9  
  9. eth0            1      ff02::1  
  10. pan0            1      ff02::1  

参数

  1. -a或--all:显示所有连线中的Socket;   
  2. -A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;   
  3. -c或--continuous:持续列出网络状态;   
  4. -C或--cache:显示路由器配置的快取信息;   
  5. -e或--extend:显示网络其他相关信息;   
  6. -F或--fib:显示FIB;   
  7. -g或--groups:显示多重广播功能群组组员名单;   
  8. -h或--help:在线帮助;   
  9. -i或--interfaces:显示网络界面信息表单;   
  10. -l或--listening:显示监控中的服务器的Socket;   
  11. -M或--masquerade:显示伪装的网络连线;   
  12. -n或--numeric:直接使用ip地址,而不通过域名服务器;   
  13. -N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;   
  14. -o或--timers:显示计时器;   
  15. -p或--programs:显示正在使用Socket的程序识别码和程序名称;   
  16. -r或--route:显示Routing Table;   
  17. -s或--statistice:显示网络工作信息统计表;   
  18. -t或--tcp:显示TCP传输协议的连线状况;   
  19. -u或--udp:显示UDP传输协议的连线状况;   
  20. -v或--verbose:显示指令执行过程;   
  21. -V或--version:显示版本信息;   
  22. -w或--raw:显示RAW传输协议的连线状况;   
  23. -x或--unix:此参数的效果和指定"-A unix"参数相同;   
  24. --ip或--inet:此参数的效果和指定"-A inet"参数相同。  

 

 

 

nicstat

可以打印出网卡的每秒流入流出量,每秒发送接收的数据包数量

 

 

 

mpstat

  1. mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。  
  2. mpstat [-P {|ALL}] [internal [count]]  
  3. 参数 解释  
  4. -P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值  
  5. internal 相邻的两次采样的间隔时间、  
  6. count 采样的次数,count只能和delay一起使用  
  7. 当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。  

输出

  1. mpstat -P ALL  
  2. Linux 3.13.0-86-generic (iZm5efk9snim7x48j1lxwsZ)       05/10/2017      _x86_64_        (4 CPU)  
  3. 12:25:49 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle  
  4. 12:25:49 PM  all    0.27    0.00    0.11    0.01    0.00    0.00    0.00    0.00    0.00   99.61  
  5. 12:25:49 PM    0    0.29    0.00    0.11    0.02    0.00    0.00    0.00    0.00    0.00   99.58  
  6. 12:25:49 PM    1    0.25    0.00    0.10    0.00    0.00    0.00    0.00    0.00    0.00   99.65  
  7. 12:25:49 PM    2    0.28    0.00    0.11    0.02    0.00    0.00    0.00    0.00    0.00   99.59  
  8. 12:25:49 PM    3    0.27    0.00    0.11    0.00    0.00    0.00    0.00    0.00    0.00   99.62  

字段含义

%user      在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100
%nice      在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
%sys       在internal时间段里,内核时间(%)       (system/total)*100
%iowait    在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq       在internal时间段里,硬中断时间(%)     (irq/total)*100
%soft      在internal时间段里,软中断时间(%)     (softirq/total)*100
%idle      在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

 

 

 

pidstat

可以用来监控单个进程,也可以监控批量进程,查看cpu时间情况,内存使用情况,磁盘使用情况

  1. pidstat -r -u -d -v -w -l -p 17779 [可选参数每次打印间隔时间(秒)] [可选参数一共监控多少次]  
  2. Linux 3.13.0-86-generic (iZm5efk9snim7x48j1lxwsZ)       05/11/2017      _x86_64_        (4 CPU)  
  3.   
  4. 05:48:11 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command  
  5. 05:48:11 PM  1000     17779    0.02    0.01    0.00    0.03     3  java -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=n -Djetty.port=9999 -jar start.jar   
  6.   
  7. 05:48:11 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command  
  8. 05:48:11 PM  1000     17779      0.17      0.00 7953816 1535300   9.34  java -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=n -Djetty.port=9999 -jar start.jar   
  9.   
  10. 05:48:11 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command  
  11. 05:48:11 PM  1000     17779      0.00      0.13      0.00  java -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=n -Djetty.port=9999 -jar start.jar   
  12.   
  13. 05:48:11 PM   UID       PID   cswch/s nvcswch/s  Command  
  14. 05:48:11 PM  1000     17779      0.00      0.00  java -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=n -Djetty.port=9999 -jar start.jar   
  15.   
  16. 05:48:11 PM   UID       PID threads   fd-nr  Command  
  17. 05:48:11 PM  1000     17779      32     155  java -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=n -Djetty.port=9999 -jar start.jar   

字段

  1. -l 显示命令相信信息  
  2. -d 显示磁盘信息  
  3. -r 显示内存信息  
  4. -u 显示cpu信息  
  5. -v 显示内核信息  
  6. -w 显示交换区信息  
  7.   
  8. cpu相关  
  9. %usr - 当在用户层执行(应用程序)时这个任务的cpu使用率,和 nice 优先级无关。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间。  
  10. %system - 这个任务在系统层使用时的cpu使用率。  
  11. %guest - 任务花费在虚拟机上的cpu使用率(运行在虚拟处理器)。  
  12. %CPU - 任务总的cpu使用率。在SMP环境(多处理器)中,如果在命令行中输入-I参数的话,cpu使用率会除以你的cpu数量。  
  13. CPU - 正在运行这个任务的处理器编号。  
  14. Command - 这个任务的命令名称。  
  15.   
  16. 磁盘相关  
  17. kB_rd/s - 任务从硬盘上的读取速度(kb)  
  18. kB_wr/s - 任务向硬盘中的写入速度(kb)  
  19. kB_ccwr/s - 任务写入磁盘被取消的速率(kb)  
  20.   
  21. 内存相关  
  22. minflt/s - 从内存中加载数据时每秒出现的小的错误的数目,这些不要求从磁盘载入内存页面。  
  23. majflt/s - 从内存中加载数据时每秒出现的较大错误的数目,这些要求从磁盘载入内存页面。  
  24. VSZ - 虚拟容量:整个进程的虚拟内存使用(kb)  
  25. RSS - 长期内存使用:任务的不可交换物理内存的使用量(kb)  

 

 

 

vmstat

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况

  1. vmstat 1 5  
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----  
  3.  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  
  4.  1  0      0 2356068 293168 4153392    0    0     0     5    1    2  0  0 100  0  0  
  5.  0  0      0 2356060 293168 4153392    0    0     0     0  851 1630  0  0 100  0  0  
  6.  0  0      0 2356060 293168 4153392    0    0     0     0  867 1629  1  0 99  0  0  
  7.  0  0      0 2356060 293168 4153392    0    0     0     0  812 1563  0  0 100  0  0  
  8.  0  0      0 2356060 293168 4153392    0    0     0     0  859 1712  0  0 100  0  0  

字段

  1. r 表示运行队列  
  2. b 表示阻塞的进程  
  3.   
  4. swpd   虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了  
  5. free   空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。  
  6. buff   写缓冲大小  
  7. cache  读缓冲大小  
  8.   
  9. si  每秒从磁盘读入交换区的大小  
  10. so  每秒从交换区存写入磁盘的大小  
  11.   
  12. bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备  
  13. bo 块设备每秒发送的块数量  
  14.   
  15. in 每秒CPU的中断次数,包括时间中断  
  16. cs 每秒上下文切换次数,这个值要越小越好,太大了,要考虑调低线程或者进程的数目  
  17.   
  18. us 用户CPU时间  
  19. sy 系统CPU时间,如果太高,表示系统调用时间长如IO操作频繁。  
  20. id  空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。  
  21. wt 等待IO CPU时间。  

 

 

 

lsof

  1. lsof abc.txt 显示开启文件abc.txt的进程  
  2. lsof -c abc 显示abc进程现在打开的文件  
  3. lsof -c -p 1234 列出进程号为1234的进程所打开的文件  
  4. lsof -g gid 显示归属gid的进程情况  
  5. lsof +d /usr/local/ 显示目录下被进程开启的文件  
  6. lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长  
  7. lsof -d 4 显示使用fd为4的进程  
  8. lsof -i 用以显示符合条件的进程情况  
  9. lsof -i[46] [protocol][@hostname|hostaddr][:service|port]  
  10.   46 --> IPv4 or IPv6  
  11.   protocol --> TCP or UDP  
  12.   hostname --> Internet host name  
  13.   hostaddr --> IPv4地址  
  14.   service --> /etc/service中的 service name (可以不止一个)  
  15.   port --> 端口号 (可以不止一个)  

字段

  1. COMMAND:进程的名称   
  2. PID:进程标识符  
  3. USER:进程所有者  
  4. FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等  
  5. DEVICE:指定磁盘的名称  
  6. SIZE:文件的大小  
  7. NODE:索引节点(文件在磁盘上的标识)  
  8. NAME:打开文件的确切名称  

此外还有其他 ls 命令

lscpu

lspci

 

 

 

tcpdump

  1. #监控8080端口  
  2. tcpdump -i eth0 port 8080  
  3.   
  4. #监控源主机是192.168.1.33  
  5. tcpdump -i eth0 src host 192.168.1.33  
  6.   
  7. #打印相信输出  
  8. tcpdump -i eth0 src port 8080 -X  
  9.   
  10. #监控发送端口是8080 并且目标端口是9999 或者 (源地址是192.168.186.131或者 目标  
  11. #地址是192.168.186.123)   
  12. tcpdump -i eth0 src port 8080 and dst port 9999 or \( src host 192.168.186.131  and dst host 192.168.186.123 \)  

 

 

 

ss

ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 

它的性能比netstat好很多,服务器负载高的时候可以选择ss

  1. ss -lptu  

参数

Shell代码   收藏代码
  1. ss -l 显示本地打开的所有端口  
  2. ss -pl 显示每个进程具体打开的socket  
  3. ss -t -a 显示所有tcp socket  
  4. ss -u -a 显示所有的UDP Socekt  
  5. ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接  
  6. ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接  
  7. ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程  
  8. ss -s 列出当前socket详细信息:  

 

 

 

sar

参数说明

  1. -A  等价于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL  
  2. -b  显示I/O和传送速率的统计信息  
  3. -B  输出内存页面的统计信息  
  4. -c  输出进程统计信息,每秒创建的进程数  
  5. -d  输出每一个块设备的活动信息  
  6. -i interval 指定间隔时长,单位为秒  
  7. -p  显示友好设备名字,以方便查看,也可以和-d 和-n 参数结合使用,比如 -dp 或-np  
  8. -q  输出进程队列长度和平均负载状态统计信息  
  9. -r  输出内存和交换空间的统计信息  
  10. -R  输出内存页面的统计信息  
  11. -t  读取 /var/log/sa/saDD 的数据时显示其中记录的原始时间,如果没有这个参数使用用户的本地时间  
  12. -u  输出CPU使用情况的统计信息  
  13. -v  输出inode、文件和其他内核表的统计信息  
  14. -V  输出版本号信息  
  15. -w  输出系统交换活动信息  
  16. -W  输出系统交换的统计信息  
  17. -y  输出TTY设备的活动信息  
  18. -n {DEV|EDEV|NFS|NFSD|SOCK|ALL} 分析输出网络设备状态统计信息。  
  19. DEV 报告网络设备的统计信息  
  20. EDEV    报告网络设备的错误统计信息  
  21. NFS 报告 NFS 客户端的活动统计信息  
  22. NFSD    报告 NFS 服务器的活动统计信息  
  23. SOCK    报告网络套接字(sockets)的使用统计信息  
  24. ALL 报告所有类型的网络活动统计信息  
  25. -x {pid|SELF|ALL}   输出指定进程的统计信息。  
  26. pid 用 pid 指定特定的进程  
  27. SELF    表示 sar 自身  
  28. ALL 表示所有进程  
  29. -X {pid|SELF|ALL}   输出指定进程的子进程的统计信息  
  30. -I {irq|SUM|ALL|XALL}   输出指定中断的统计信息。  
  31. irq 指定中断号  
  32. SUM 指定输出每秒接收到的中断总数  
  33. ALL 指定输出前16个中断  
  34. XALL    指定输出全部的中断信息  
  35. -P {cpu|ALL}    输出指定 CPU 的统计信息  
  36. -o filename 将输出信息保存到文件 filename  
  37. -f filename 从文件 filename 读取数据信息。filename 是使用-o 选项时生成的文件。  
  38. -s hh:mm:ss 指定输出统计数据的起始时间  
  39. -e hh:mm:ss 指定输出统计数据的截至时间,默认为18:00:00  

 

1.输出CPU使用情况的统计信息

  1. sar -u  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle  
  5. 12:10:01 AM       all      0.02      0.00      0.14      0.01      0.00     99.84  
  6. 12:20:01 AM       all      0.02      0.00      0.12      0.01      0.00     99.86  
  7. 12:30:01 AM       all      0.01      0.00      0.12      0.01      0.00     99.86  
  8. Average:          all      0.03      0.00      0.13      0.01      0.00     99.84  

输出项说明:

CPU all 表示统计信息为所有 CPU 的平均值。
%user 显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice 显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system 在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait 显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle 显示 CPU 空闲时间占用 CPU 总时间的百分比。

 

2.显示I/O和传送速率的统计信息

  1. sar -b  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM       tps      rtps      wtps   bread/s   bwrtn/s  
  5. 12:10:01 AM      1.58      0.00      1.58      0.00     16.71  
  6. 12:20:01 AM      1.09      0.00      1.09      0.00     10.85  
  7. 12:30:01 AM      1.08      0.00      1.08      0.00     10.74  
  8. Average:         1.24      0.00      1.24      0.00     12.70  

输出项说明:

 

tps 每秒钟物理设备的 I/O 传输总量
rtps 每秒钟从物理设备读入的数据总量
wtps 每秒钟向物理设备写入的数据总量
bread/s 每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s 每秒钟向物理设备写入的数据量,单位为 块/s

 

3.输出内存页面的统计信息

  1. sar -B  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  
  5. 12:10:01 AM      0.00      4.17      9.74      0.00  
  6. 12:20:01 AM      0.00      2.71      2.24      0.00  
  7. 12:30:01 AM      0.00      2.69      2.25      0.00  
  8. Average:         0.00      3.17      4.07      0.00  

输出项说明:

 

pgpgin/s 每秒钟从磁盘读入的系统页面的 KB 总数
pgpgout/s 每秒钟向磁盘写出的系统页面的 KB 总数
fault/s 系统每秒产生的页面失效(major + minor)数量
majflt/s 系统每秒产生的页面失效(major)数量

 

4.输出每秒创建的进程数的进程统计信息 

  1. sar -c  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM    proc/s  
  5. 12:10:01 AM      0.05  
  6. 12:20:01 AM      0.03  
  7. 12:30:01 AM      0.03  
  8. Average:         0.03  

输出项说明:

 

proc/s 每秒钟创建的进程数

 

5.输出网络设备状态的统计信息

  1. sar -n EDEV |egrep 'eth0|IFACE'  
  2. 12:00:01 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s  
  3. 12:10:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  4. 12:20:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  5. 12:30:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  6. Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00  

输出项说明:

IFACE 网络设备名
rxerr/s 每秒接收的坏包总数
txerr/s 传输包时每秒发生错误的总数
coll/s 传输包时每秒发生冲突(collision)的总数
rxdrop/s 接收包时,由于缺乏缓存,每秒丢弃(drop)包的数量
txdrop/s 传输包时,由于缺乏缓存,每秒丢弃(drop)包的数量
txcarr/s 传输包时,每秒发生的传输错误(carrier-error)的数量
rxfram/s 接收包时,每秒发生帧校验错误(frame alignment error)的数量
rxfifo/s 接收包时,每秒发生队列(FIFO)一出错误的数量
txfifo/s 传输包时,每秒发生队列(FIFO)一出错误的数量

 

6.输出进程队列长度和平均负载状态统计信息

  1. sar -q  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15  
  5. 12:10:01 AM         0        85      0.02      0.01      0.00  
  6. 12:20:01 AM         0        85      0.01      0.00      0.00  
  7. 12:30:01 AM         0        85      0.03      0.01      0.00  
  8. Average:            0        85      0.01      0.00      0.00  

输出项说明:

runq-sz 运行队列的长度(等待运行的进程数)
plist-sz 进程列表中进程(processes)和线程(threads)的数量
ldavg-1 最后1分钟的系统平均负载(System load average)
ldavg-5 过去5分钟的系统平均负载
ldavg-15 过去15分钟的系统平均负载

 

7.输出内存和交换空间的统计信息

  1. sar -r  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad  
  5. 12:10:01 AM    262068    253408     49.16     43884    156456   1048568         0      0.00         0  
  6. 12:20:01 AM    261572    253904     49.26     44580    156448   1048568         0      0.00         0  
  7. 12:30:01 AM    260704    254772     49.42     45124    156472   1048568         0      0.00         0  
  8. Average:       259551    255925     49.65     46453    156470   1048568         0      0.00         0  

输出项说明:

kbmemfree 可用的空闲内存数量,单位为 KB
kbmemused 已使用的内存数量(不包含内核使用的内存),单位为 KB
%memused 已使用内存的百分数
kbbuffers 内核缓冲区(buffer)使用的内存数量,单位为 KB
kbcached 内核高速缓存(cache)数据使用的内存数量,单位为 KB
kbswpfree 可用的空闲交换空间数量,单位为 KB
kbswpused 已使用的交换空间数量,单位为 KB
%swpused 已使用交换空间的百分数
kbswpcad 交换空间的高速缓存使用的内存数量

 

8.输出内存页面的统计信息

  1. sar -R  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM   frmpg/s   bufpg/s   campg/s  
  5. 12:10:01 AM     -0.10      0.23      0.01  
  6. 12:20:01 AM     -0.21      0.29     -0.00  
  7. 12:30:01 AM     -0.36      0.23      0.01  
  8. Average:        -0.21      0.22      0.00  

输出项说明:

 

frmpg/s 每秒系统中空闲的内存页面(memory page freed)数量
bufpg/s 每秒系统中用作缓冲区(buffer)的附加内存页面(additional memory page)数量
campg/s 每秒系统中高速缓存的附加内存页面(additional memory pages cached)数量

 

9.输出inode、文件和其他内核表的信息

  1. sar -v  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM dentunusd   file-sz  inode-sz  super-sz %super-sz  dquot-sz %dquot-sz  rtsig-sz %rtsig-sz  
  5. 12:10:01 AM      7253       576      5126         0      0.00         0      0.00         0      0.00  
  6. 12:20:01 AM      7253       576      5126         0      0.00         0      0.00         0      0.00  
  7. 12:30:01 AM      7253       576      5126         0      0.00         0      0.00         0      0.00  
  8. Average:         7253       589      5125         0      0.00         0      0.00         0      0.00  

输出项说明:

dentunusd 目录高速缓存中未被使用的条目数量
file-sz 文件句柄(file handle)的使用数量
inode-sz i节点句柄(inode handle)的使用数量
super-sz 由内核分配的超级块句柄(super block handle)数量
%super-sz 已分配的超级块句柄占总超级块句柄的百分比
dquot-sz 已经分配的磁盘限额条目数量
%dquot-sz 分配的磁盘限额条目数量占总磁盘限额条目的百分比
rtsig-sz 已排队的 RT 信号的数量
%rtsig-sz 已排队的 RT 信号占总 RT 信号的百分比

 

10.输出系统交换活动信息

  1. sar -w  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM   cswch/s  
  5. 12:10:01 AM     44.74  
  6. 12:20:01 AM     44.41  
  7. 12:30:01 AM     44.41  
  8. Average:        44.50  

输出项说明:

 

cswch/s 每秒的系统上下文切换数量

 

11.输出系统交换的统计信息

  1. sar -W  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM  pswpin/s pswpout/s  
  5. 12:10:01 AM      0.00      0.00  
  6. 12:20:01 AM      0.00      0.00  
  7. 12:30:01 AM      0.00      0.00  
  8. Average:         0.00      0.00  

输出项说明:

 

pswpin/s 每秒系统换入的交换页面(swap page)数量
pswpout/s 每秒系统换出的交换页面(swap page)数量

 

12.输出TTY设备的活动信息

Shell代码   收藏代码
  1. sar -y  
  2. Linux 2.6.18-53.el5 (cnetos5)   01/22/2008  
  3.   
  4. 12:00:01 AM       TTY   rcvin/s   xmtin/s framerr/s prtyerr/s     brk/s   ovrun/s  
  5. 12:10:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00  
  6. 12:10:01 AM         1      0.00      0.00      0.00      0.00      0.00      0.00  
  7. 12:20:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00  
  8. 12:20:01 AM         1      0.00      0.00      0.00      0.00      0.00      0.00  
  9. 12:30:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00  
  10. 12:30:01 AM         1      0.00      0.00      0.00      0.00      0.00      0.00  
  11. ………………  
  12. Average:            0      0.00      0.00      0.00      0.00      0.00      0.00  
  13. Average:            1      0.00      0.00      0.00      0.00      0.00      0.00  

输出项说明:

 

TTY TTY 串行设备号
rcvin/s 每秒接收的中断数量
xmtin/s 每秒传送的中断数量
framerr/s 每秒发生的帧错误数(frame error)量
prtyerr/s 每秒发生的奇偶校验错误(parity error)数量
brk/s 每秒发生的暂停(break)数量
ovrun/s 每秒发生的溢出错误(overrun error)数量

 

13.时间段输出

Shell代码   收藏代码
  1. #第三天7点到10点 IO和传输速率相关信息  
  2. sar -b -s 07:00:00 -e 10:00:00 -f /var/log/sa/sa03  
  3.   
  4. #第三天7点到10点 eth0网卡的流量信息  
  5. sar -n DEV -s 07:00:00 -e 10:00:00 -f /var/log/sa/sa03 | egrep 'eth0|IFACE'  
  6.   
  7. #第三天7点到10点 进程队列长度和平级负载状态统计信息  
  8. sar -q -s 07:00:00 -e 10:00:00 -f /var/log/sa/sa03  

 

 

 

 

 

参考

全能系统监控工具dstat

linux wa%过高,iostat查看io状况

ifstat命令

linux lsof命令详解

Linux tcpdump命令详解

几种缺页中断算法(FIFO,LRU与LFU)的实现过程 

linux内存管理2:内存映射和需求分页(英文名字:demand Paging,又叫:缺页中断)

Linux设备模型——设备驱动模型和sysfs文件系统解读

Linux常用系统性能监控命令

DNS解析过程详解

linux命令大全

 

猜你喜欢

转载自blog.csdn.net/hixiaoxiaoniao/article/details/80690669