linux系统检测可能会使用到的命令汇总

1.uptime命令

  uptime命令能够打印系统总共运行了多长时间以及系统的平均负载。

直接在命令行敲uptime会显示下面数据:
16:19:08 up 114 days, 17:18,  2 users,  load average: 0.00, 0.01, 0.05

#16:19:08 是当前服务器的时间
#114 days 是当前服务器运行的时间长度
#2 users 当前的用户数量
#load average: 0.00, 0.01 是当前系统的负载,分别是1 5 15分钟的均值

2.top命令

2.1 top显示出来各个参数的含义

第一行的内容所代表的含义如下:
#16:37:02  系统的时间
# 114 days 系统已运行多长时间
# 2 users  当前的用户
# load average: 0.02, 0.02, 0.05 系统负载

第二行的内容所代表的含义如下:
#Tasks:  79 total  总的任务进程数
#1 running         运行的进程数
#78 sleeping       休眠的进程数
#0 stopped         停止的进程数
#0 zombie          僵尸进程数

第三行的内容所代表的含义如下:
#%Cpu(s)    CPU状态信息
#0.7 us    (user space)用户空间占用CPU的百分比
#0.7 sy    (sysctl)内核空间占用CPU百分比
#0.0 ni     改变过优先级的进程所占用CPU的百分比
#98.7 id    空闲CPU百分比
#0.0 wa     IO等待占用CPU百分比
#0.0 hi     硬中断占用CPU百分比
#0.0 si     软中断占用CPU百分比
#0.0 st    

第四行的内容所代表的含义如下:
#KiB Mem        内存信息
#1882048 total  物理内存的总大小
#104160 free    空闲内存的大小
#544756 used    使用的内存的大小
#1233132 buff/cache   用做内核缓存的内存大小

第五行的内容所代表的含义如下:
#KiB Swap   swap内存信息
#0 total    交换分区的总大小
#0 free     空闲的交换分区大小
#0 used     使用的交换分区大小
#1164664 avail Mem  代表可以使用于下一次分配的物理内存数量

这一行是进程相关的一些信息,这里显示的只是一部分,剩余的部分可以按f建进入去选择,下面会列出所有的有关参数所代表的含义:
PID     进程的ID
USER    进程所有者的用户名
PR      优先级
NI      nice值。负值表示高优先级,正值表示低优先级
VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES     进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR     共享内存大小,单位kb
S       进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU    上次更新到现在的CPU时间占用百分比
%MEM    进程使用的物理内存百分比
TIME+   进程使用的CPU时间总计,单位1/100秒
COMMAND    命令名/命令行
PS:下面是未显示出来的: PPID 父进程id UID 进程所有者的用户id RUSER Real User Name GROUP 进程所有者的组名 TTY 启动进程的终端名。不是从终端启动的进程则显示为
? P 最后使用的CPU,仅在多CPU环境下有意义 SWAP 进程使用的虚拟内存中,被换出的大小,单位kb. CODE 可执行代码占用的物理内存大小,单位kb DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb nFLT 页面错误次数 nDRT 最后一次写入到现在,被修改过的页面数。 nTH 线程数量 WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 Flags 任务标志 ENVIRON 环境变量

2.2 top使用的一些参数项

top使用格式:
top -[d] | [p] | [q] | [c] | [S] | [s] | [n]
参数的含义如下:
d: 指定没两次屏幕信息刷新之间的时间间隔。
p:通过指定某个监控项的进程ID来仅监控某个进程的状态。
q:该选项将使top没有任何延迟的进行刷新。
S:指定类继模式
s:使用top在安全模式下运行。
i:使用top不显示任何闲置或者僵尸进程
c:显示整个命令行而不是命令名。

PS:下面使直接使用top后会用到的命令:
f或者F:从当前显示中添加或者删除项目。
o或者O:改变显示项目的顺序
l:切换显示平均负载和启动时间信息。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行排序。
T:根据时间/累计时间进行排序。
W:将当前设置写入~/.toprc文件中。

2.3 top视图

  直接使用top进入基本视图,在基本视图中按1可以监控每个逻辑CPU的概况。

    敲击键盘“b”(打开/关闭加亮效果)这时使视图2,具体效果如下:  

     这里会把运行的进程进行加亮,也可以敲击y来打开或者关闭运行状态进程的加亮效果。

  敲击键盘‘x’(打开/关闭排序列的加亮效果),top视图变换如下:

     可以看到现在是按"%CPU"进行排序的,可以按”shift+>”或者”shift+<”左右改变排序序列.

  在top基本视图中,敲击”f”进入另一个视图,在这里可以编辑基本视图中的显示字段:

   用上下键选择选项,按下空格键可以决定是否在基本视图中显示这个选项。

 3.iostat命令

  iostat是IO statistics(输入/输出统计)的缩写,iostat工具会对系统的磁盘活动进行监控。它的特点是汇报磁盘活动的统计情况,同时也会汇报出CPU使用的情况。但是iostat不能对单个进程做深入的分析,仅能够对系统的整体情况进行分析。

iostat的安装:
yum install sysstat

  如果直接在命令行敲击iostat的话可以看到所有设备的信息,如下图所示:

上面的图中所显示的一些信息的具体含义如下:
第一行显示的是系统的一些基本信息
下面这行是CPU的属性值相关的说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。

PS:注意
1.如果%iowait的值比较高,可能表示硬盘存在IO瓶颈
2.如果%idle的值比较高,表示CPU目前比较空闲
3.如果%idle的值很高,但是系统的响应比较慢,可能是CPU在等待分配内存,这时可以考虑加大内存的容量
4.如果%idle的值持续低于10,那么可能是CPU的处理能力相对比较低下,系统中最需要解决的资源是CPU

在下面那行是磁盘相关的属性信息:
tps:该设备每秒的传输次数
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;
用法:iostat [选项] [<时间间隔>] [<次数>]

参数:
-c: 显示CPU使用情况
-d: 显示磁盘使用情况
-N: 显示磁盘阵列(LVM) 信息
-n: 显示NFS 使用情况
-k: 以 KB 为单位显示
-m: 以 M 为单位显示
-t: 报告每秒向终端读取和写入的字符数和CPU的信息
-V: 显示版本信息
-x: 显示详细信息
-p:[磁盘] 显示磁盘和分区的情况



下面是可能会用到的一些简单的命令:
#定时显示所有的信息,每隔2秒刷新显示3次
iostat 2 3
#指定磁盘的信息
iostat -d /dev/vda
#显示tty和cpu的信息
iostat -t
#以M为单位显示所有的信息
iostat -m
#查看TPS和吞吐量信息
iostat -d -k 1 1
#查看设备使用率(%util)、响应时间(await)
iostat -d -x -k 1 1

  下面是查看设备使用率响应时间的图:

rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s:    每秒完成的读 I/O 设备次数。即 rio/s
w/s:    每秒完成的写 I/O 设备次数。即 wio/s
rkB/s:  每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s:  每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
r_await:每个读操作平均所需的时间,不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
w_await:每个写操作平均所需的时间,不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比。

如果%util接近100%,说明产生的IO青丘数量太多了,IO系统已经负载了,该磁盘可能存在瓶颈。
如果svctm比较接近await,说明IO几乎没有等待时间。
如果await远大于svctm,说明IO队列太长了,IO响应太慢,需要进行必要的优化。
如果avgqu-sz比较大,也说明有一定量的IO在等待。

 4.vmstat命令

  vmstat可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存的使用,虚拟内存交换的情况,IO读写情况。总结来说就是用来获取有关进程、虚存、页面交换空间以及CPU活动信息,我们可以使用这些信息来观察系统负载的情况。

#vmstat的用法
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]

-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量
-m:显示slabinfo
-n:只在开始时显示一次各字段的名称
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、10241000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。

  如果直接在命令行敲击vmstat会出现如下图所示的数据:

#procs下面的参数含义如下:
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

#memory下面的参数含义如下:
swpd   切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
free   当前的空闲页面列表中内存数量(k表示)
buff   作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
cache  作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。

#swap下面的参数含义如下:
si  由内存进入内存交换区数量。
so  由内存交换区进入内存数量。

#io下面的参数含义如下:
bi  从块设备读入数据的总量(读磁盘)(每秒kb)。
bo  块设备写入数据的总量(写磁盘)(每秒kb)。
PS:这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。

#system下面的参数含义如下:
显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs 列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。

#cpu下面的参数含义如下:
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id 列显示了cpu处在空闲状态的时间百分比

 5.iotop命令

  iotop命令可以用来监控磁盘IO的状况。与top的UI类似。

-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。

Total DISK READ/Total DISK WRITE 
一方面表示了进程和内核线程之间的总的读写带宽,另一方面也表示内核块设备子系统的。
Actual DISK READ/Actual DISK WRITE
表示在内核块设备子系统和下面硬件(HDD、SSD 等等)对应的实际磁盘 I/O 带宽。

TID             线程号或进程号
PRIO            线程运行时的I/O优先级
USER            进程所属用户
DISK READ       刷新时间间隔内读取数据量
DISK WRITE      刷新时间间隔内写入数据量
SWAPIN          每个进程的交换使用率
IO              每个进程的 I/O 利用率,包含磁盘和交换
COMMAND         进程名字

 

posted @ 2022-05-30 11:21  coffee_kai  阅读(66)  评论(0编辑  收藏  举报