Linux资源监控命令&工具

目录

一、 mpstat

二、iostat

三、iotop

四、pidstat

五、lsof


一、 mpstat

 mpstat(Multiprocessor Statistics)是实时系统监控工具。报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。

用法:

mpstat [-P {|ALL}] [internal [count]]

-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间、
count 采样的次数,count只能和delay一起使用
当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。

1.查看每个cpu核心的详细当前运行状况信息

mpstat -P ALL 2 2

Linux资源监控命令&工具_第1张图片

 第一行的末尾给出了当前系统中CPU的数量。后面的表格中则输出了系统当前CPU的使用状况,以下为每列的含义:
%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

2.每隔2秒输出一次CPU的当前运行状况信息,一共输出4次

mpstat 2 4

(如果没有第二个数字参数,mpstat将每隔两秒执行一次,直到按CTRL+C退出)

Linux资源监控命令&工具_第2张图片

二、iostat

主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。iostat的数据的主要来源是/proc/partitions。

常用选项:

-c      只显示CPU行
-d      显示磁盘行
-k      以千字节为单位显示磁盘输出
-m     以M为单位显示磁盘输出
-t       在输出中包括时间戳
-x       在输出中包括扩展的磁盘指标

 1.显示设备的IO负载,其中每隔1秒刷新并输出结果一次,输出2次后iostat退出

iostat -d 1 2

Linux资源监控命令&工具_第3张图片

KB_read/s 每秒块(扇区)读取的数量。
KB_wrtn/s 每秒块(扇区)写入的数量。
KB_read 总共块(扇区)读取的数量。
KB_wrtn 总共块(扇区)写入的数量。

2.显示和io相关的扩展数据

iostat -d -x 1 2

Linux资源监控命令&工具_第4张图片

rrqm/s 队列中每秒钟合并的读请求数量
wrqm/s 队列中每秒钟合并的写请求数量
r/s 每秒钟完成的读请求数量
w/s 每秒钟完成的写请求数量
rsec/s 每秒钟读取的扇区数量
wsec/s 每秒钟写入的扇区数量
avgrq-sz 平均请求扇区的大小
avgqu-sz 平均请求队列的长度,队列长度越短越好。
await 平均每次请求的等待时间,这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长说明系统出了问题。
util 设备的利用率。在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

三、iotop

 用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。

常用参数:

–version                          查看版本信息
-h, –help                          查看帮助信息
-o, –only                          只显示在划硬盘的程序
-b, –batch                        批量处理 用来记录日志
-n NUM                           设定循环几次
-d SEC, –delay=SEC      设定显示时间间隔

常用快捷键:

左右箭头 -->            改变排序方式,默认是按IO排序
r -->                         改变排序顺序
o -->                        只显示有IO输出的进程
p -->                        进程/线程的显示方式的切换
a -->                        显示累积使用量
q -->                        退出

Linux资源监控命令&工具_第5张图片

四、pidstat

主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

用法:

pidstat [选项] [时间间隔   刷新次数]    (如果没有刷新次数就会按时间间隔一直刷新)

常用参数:

-l 显示该进程和CPU相关的信息(command列中可以显示命令的完整路径名和命令的参数)。
-d 显示该进程和设备IO相关的信息。
-r 显示该进程和内存相关的信息。
-w 显示该进程和任务时间片切换相关的信息。
-t 显示在该进程内正在运行的线程相关的信息。
-p 后面紧跟着带监控的进程id或ALL(表示所有进程),如不指定该选项,将监控当前系统正在运行的所有进程。

1.监控pid为1(init)的进程的CPU资源使用情况,其中每隔3秒刷新并输出一次,3次后程序退出
      pidstat -p 1 2 3 -l

Linux资源监控命令&工具_第6张图片

 %usr: 该进程在用户态的CPU使用率。
%system: 该进程在内核态(系统级)的CPU使用率。
%CPU: 该进程的总CPU使用率,如果在SMP环境下,该值将除以CPU的数量,以表示每CPU的数据。
CPU: 该进程所依附的CPU编号(0表示第一个CPU)。

2.监控pid为1(init)的进程的设备IO资源负载情况,其中每隔2秒刷新并输出一次,3次后程序退出
    pidstat -p 1 2 3 -d

Linux资源监控命令&工具_第7张图片

kB_rd/s: 该进程每秒的字节读取数量(KB)。
kB_wr/s: 该进程每秒的字节写出数量(KB)。
kB_ccwr/s: 该进程每秒取消磁盘写入的数量(KB)。

3.监控pid为1(init)的进程的内存使用情况,其中每隔2秒刷新并输出一次,3次后程序退出
          pidstat -p 1 2 3 -r

Linux资源监控命令&工具_第8张图片

 minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
VSZ: 该进程使用的虚拟内存(以kB为单位)
RSS: 该进程使用的物理内存(以kB为单位)
%MEM: 该进程使用内存的百分比
Command: 拉起进程对应的命令

4.监控pid为1(init)的进程任务切换情况,其中每隔2秒刷新并输出一次,3次后程序退出。
        pidstat -p 1 2 3 -w

Linux资源监控命令&工具_第9张图片

 cswch/s: 每秒任务主动(自愿的)切换上下文的次数。主动切换是指当某一任务处于阻塞等待时,将主动让出自己的CPU资源。
nvcswch/s: 每秒任务被动(不自愿的)切换上下文的次数。被动切换是指CPU分配给某一任务的时间片已经用完,因此将强迫该进程让出CPU的执行权。

5.监控pid为1(init)的进程及其内部线程的内存(r选项)使用情况,其中每隔2秒刷新并输出一次,3次后程序退出。(如果-t选项后面不加任何其他选项,缺省监控的为CPU资源)
     pidstat -p 1 2 3 -tr

Linux资源监控命令&工具_第10张图片

TGID: 线程组ID。
TID: 线程ID。

 

五、lsof

    列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

在终端下输入lsof即可显示系统打开的文件,因为lsof需要访问核心内存和各种文件,所以必须以root用户的身份运行它才能够充分地发挥其功能。

1.列出所有打开的文件
      lsof

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

2.查看哪个进程在使用某个文件

例:lsof /etc/passwd        哪个进程在占用/etc/passwd

 3.递归查找某个目录中所有打开的文件

          lsof +D /usr/lib

Linux资源监控命令&工具_第11张图片

 4.列出某个用户打开的所有文件

lsof -u root

-u选项限定只列出所有被用户root打开的文件,

你可以通过逗号指定多个用户:lsof -u root,zhangsan

这条命令会列出所有zhangsan和root用户打开的文件。

5.查找某个程序打开的所有文件

例:lsof -c sshd   -c选项限定只列出以sshd开头的进程打开的文件

Linux资源监控命令&工具_第12张图片

6. 组合列出所有由某个用户或某个进程打开的文件

           lsof -u root -c sshd

查看由pkrumins用户或是sshd进程打开的文件。

7.列出除root用户外的所有用户打开的文件
          lsof -u ^root
注意root前面的^符号,它执行取反操作,因此lsof会列出所有root用户之外的用户打开的文件。

8.网络连接
lsof -i 列出所有网络连接,lsof的-i选项可以列出所有打开了网络套接字(TCP和UDP)的进程。
lsof -i tcp 列出所有TCP网络连接
lsof -i udp 列出所有UDP网络连接
lsof -i :25 找到使用某个端口的进程,:25和-i选项组合可以让lsof列出占用TCP或UDP的25端口的进程。也可以使用/etc/services中制定的端口名称来代替端口号,比如:lsof -i :smtp
lsof -i udp:53 找到使用某个udp端口号的进程
lsof -a -u hacker -i 找到某个用户的所有网络连接
lsof -N 列出所有NFS(网络文件系统)文件
lsof -U 列出所有UNIX域Socket文件
lsof -g 1234 列出所有对应某个组id的进程

9.文件描述符
lsof -d 2 列出所有以描述符2打开的文件
lsof -d 0-2 列出所有描述符为0,1,2的文件。
lsof -d mem 列出所有内存映射文件,-d选项还支持其它很多特殊值

10.输出使用某些资源的进程pid
lsof -t -i -t选项输出进程的PID,你可以将它和-i选项组合输出使用某个端口的进程的PID,下面的命令将会杀掉所有使用网络的进程:kill -9 `lsof -t -i`

11.循环列出文件

lsof -r 1 -r选项让lsof可以循环列出文件直到被中断,参数1的意思是每秒钟重复打印一次,这个选项最好同某个范围比较小的查询组合使用,比如用来监测网络活动:lsof -r 1 -u john -i -a

你可能感兴趣的:(linux)