29.w 命令:vmstat top sar nload

本文详细介绍Linux系统中使用w、vmstat、top、sar和nload命令进行系统性能监控的方法,包括系统负载、CPU使用率、内存状态、磁盘I/O、网络流量等关键指标的解读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10.1 使用w查看系统负载

10.2 vmstat命令

10.3 top命令

10.4 sar命令

10.5 nload命令

扩展

https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html Linux vmstat命令实战详解

https://blog.51cto.com/zhanx/2310957 vmstat命令

 

10.1 使用w查看系统负载:

 

~1. w/uptime 查看系统负载

load average: 0.97, 0.28, 0.09

每段表示一分钟、五分钟、十分钟系统负载的值是多少,该数值跟cpu有关系,单位时间段内,使用cpu活动的进程有多少个

第一段表示(我们经常会看第一段,他代表系统当前的负载情况),一分钟内使用cpu活动的进程有多少个,这是一个平均值。0.00表示系统空载,这样的就有点资源浪费。那么表示多少最理想呢,要看他的逻辑cpu数量,使用下面的 cat /proc/cpuinfo来看,看第一段 processor : 0,o表示只有一颗逻辑cpu,1表示2颗,以此类推。

所以,假如有8颗逻辑cpu,那么他最理想的值就是不高于8.

第一段,第二段同理。分别代表五分钟,十五分钟的负载值

 

uptime 可查看 w 命令后的第一段,平常我们用 w 看就可以了

~2. cat /proc/cpuinfo 查看cpu核数

主要看第一段 processor : 0,代表逻辑cpu数,我们通常只考虑逻辑cpu就可以了,不用考虑物理cpu。因为物理cpu又会分为几核,与逻辑cpu数量

 

实例:

1.

[root@afeilinux-01 ~]# w

 14:14:32 up 6 days, 21:09,  3 users,  load average: 0.05, 0.08, 0.06

系统时间 启动多少分钟 目前登录几个用户 关键,系统负载 每段表示一分钟、五分钟、十分钟系统负载的值是多少

该数值跟cpu有关系,单位时间段内,使用cpu活动的

进程有多少个

登录的用户

可从下面看到

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

用户是谁 登录的终端 地址 登录的时间 空闲了多长时间 使用cpu的时间,不用关注 命令

root     tty1                      228月19  6days  0.04s  0.04s -bash
root     pts/0    192.168.30.1     228月19  0.00s  1.69s  0.03s w
root     pts/1    192.168.30.1     二14    2:36m  0.08s  0.00s vi passwd

[root@afeilinux-01 ~]# date

2019年 08月 29日 星期四 14:20:21 CST

[root@afeilinux-01 ~]# uptime

 14:20:52 up 6 days, 21:16,  3 users,  load average: 0.16, 0.12, 0.07

2.

[root@afeilinux-01 ~]# cat /proc/cpuinfo

processor : 0 通常主要看这一行,代表多少逻辑cpu,0表示只有1个,5表示有6个。以此类推

processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 60
model name	: Intel(R) Core(TM) i5-4430 CPU @ 3.00GHz
stepping	: 3
microcode	: 0x9
cpu MHz		: 2993.112
cache size	: 6144 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm epb fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt dtherm ida arat pln pts
bogomips	: 5986.22
clflush size	: 64
cache_alignment	: 64
address sizes	: 42 bits physical, 48 bits virtual
power management:

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

10.2 vmstat命令:

 

如果负载值大于cpu核数了,就表示cpu不够用了。这个时候就要想是什么原因导致的cpu不够用,这个时候我的进程在干什么,都有哪些任务在使用我的cpu。可能进一步的去想系统的瓶颈在哪里。所以我们会用到vmstat

 

~1. vmstat 监控系统状态

~ 用法 vmstat 1

1表示每一秒钟动态显示一次

也可 vmstat 1 5表示,每一秒钟动态显示一次,共显示5次

~2. 关键的几列: r,b,swpd,si,so,bi,bo,us,wa

· r即run的简写,表示有多少个进程处于run的状态

假如只有一个cpu,并且有十个进程。就必须要排队,等待cpu分配资源。因为某一个时刻只能有一个进程使用cpu,也就是说等排队轮到你的时候,才能到你来使用cpu。不过是循环的,等下一次循环可以再次使用cpu。

所以。只要是在排队状态,他就是r的状态

· b即block的简写,表示被cpu以外的资源,比如被硬盘、网络等给阻断了,处于一个等待状态(可理解为卡死了)

假如要给这个进程分配一个数据包。但是网速太慢,本来只需要1秒,结果用了10秒,所以就只能等网速了,这个就是有多少个进程在等待

· swpd之前有讲,当内存不够的时候,可临时把数据放在swap空间里面去。所以要关注这个数字,当这个数字不变的时候还好,没有关系。如果这个数字变的时候,一会多了一会少了,那就说明,交换分区和内存在频繁的交换数据,那么,就只有一个说明一个结果,就是你的内存不够了

· si so与swpd是有关联的,如果swpd这一列在频繁的变,那si so也是存在数字变更的

si即为in,表示有多少个数字,有多少的块。单位是KB。有多少KB的数字,进入到内存中

so即为out,表示从内存里出来的

si so他们的参照物都是内存,分别代表有多少是从内存里进去的,有多少是从内存了出来的

· bi bo是跟磁盘有关系的

bi表示从磁盘里出来,进入到内存里面去。也就是读,读的数据量有多少

bo表示写,写入到磁盘里面去

如果这个两个数字很大的话,代表磁盘在频繁的读写。也会造成 b 列增加,因为会造成很多进程在等待。这是在变的

· us即为user,表示用户级别的,用户占用是多少。这个数字不会超过100,因为是百分比

用户的一些资源,占用了cpu的百分比。如果这个数字长时间大于50,就说明系统资源不够了

· sy表示系统,系统本身的进程或服务。所占用的cpu的百分比

` id表示空闲

·· us+sy+id等于一百,是这样的百分比

· wa表示等待,跟 b 是有点类似的。是等待cpu的百分比。如果这一列很大,代表cpu不够

. st:被虚拟化偷走的时间比率

 

 

 

 

实例:

1.

[root@afeilinux-01 ~]# vmstat

procs -----------memory---------- ---swap-- ----- io---- -system-- ------cpu-----

内存 虚拟磁盘/交换分区 磁盘 系统进程

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0 386816  60636     24 379252    0    1     4    89   28   42  1  1 96  3  0

[root@afeilinux-01 ~]# vmstat 1 按ctrl+c结束

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0 387840  70456     24 368616    0    1     4    89   28   42  1  1 96  3  0
 0  0 387840  70456     24 368620    0    0     4    14   90  169  0  0 100  0  0
 0  0 387840  70456     24 368620    0    0     0    11   90  163  1  1 97  1  0
 0  0 387840  70456     24 368620    0    0     0  1394  106  228  0  0 80 20  0
 0  0 387840  70456     24 368620    0    0     0    10   85  156  0  1 98  1  0
 0  0 387840  70456     24 368620    0    0     0    16   83  176  1  1 98  0  0
 0  0 387840  70456     24 368620    0    0     0    10   76  158  0  0 100  0  0
 0  0 387840  70456     24 368624    0    0     0    11   73  152  0  1 93  6  0
 0  0 387840  70084     24 368624    0    0     0    10   94  162  0  1 98  1  0
 0  0 387840  70084     24 368624    0    0     0    11   92  185  1  1 94  4  0
 0  0 387840  70084     24 368624    0    0     4    15   95  183  0  1 96  3  0
 0  0 387840  70084     24 368628    0    0     0    10   83  177  0  0 99  1  0
 0  0 387840  70084     24 368628    0    0     0    11   93  163  0  1 99  0  0
 0  0 387840  70084     24 368628    0    0     0    10   81  163  1  2 94  3  0

^C

[root@afeilinux-01 ~]# vmstat 1 5 显示五行自动停止

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0 387840  70332     24 368756    0    1     4    89   28   42  1  1 96  3  0
 1  0 387840  70332     24 368756    0    0     0    10   97  199  1  0 99  0  0
 0  0 387840  70332     24 368756    0    0     0    11  112  201  0  1 98  1  0
 0  0 387840  70332     24 368756    0    0     4  1367  135  235  1  1 86 12  0
 0  0 387840  70332     24 368760    0    0     0     5   98  194  0  1 99  0  0

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

10.3 top命令:

 

如上所知,w是查看系统负载,vmstat是查看/监控系统状态。

那么我们能不能知道具体哪个进程呢,所以这时候就用到了top

 

~1. top 查看进程使用资源情况

三秒钟显示一次,动态的

· 第一行跟 w 查看的是一样的

· 第二行,有多少个total(进程)。

有多少处于r状态,多少个处于sleeping状态(休眠),也不是永久休眠,可能是暂时休眠。

有多少stopped。有多少zombie(僵尸状态),比如主目录被删除,只留下了子文件,也没人管他了

· 第三行,cpu占用情况。

同样us+sy+id等于百分百

经常关注us,长时间在60%以上,对cpu不好。cpu风扇长时间再转,就代表cpu处于工作状态

如果us百分比很高,那么系统负载就会很高。因为us百分比高了,其他的进程过来就得排队,就会造成系统负载增高

st代表被偷走了的cpu百分比。如果服务器做了一些虚拟化,他会有一些虚拟机很有可能会偷走一部分cpu

· 第四行第五行表示内存使用情况。

Kib Mem表示物理内存。Kib swap表示交互分区

基本上只会关注Kib Mem,total(总共内存)有多大,还有多少free(剩余内存),使用了多少(used)

下面的是我们重点需要去关注的,

%cpu和%Mem(内存)会以百分比的多少来进行排序,占比多的排在上面

RES是物理内存大小(单位是KB)

 

 

~ top -c 显示详细的进程信息

可显示这个进程的绝对路径

~ top -bn1 静态显示所有进程

一次性的列出所有的进程,适合在写shell脚本时用到

~ q 退出,数字1显示所有核cpu,大写字母M按内存使用排序

按字母 q 退出top

按大写的M是切换内存排序。按大写的P是按cpu排序

按数字 1 可以显示所有的CPU占比情况,在上面

~ 大写字母P按cpu使用排序

~pid可理解为这个进程的序号,使用 q+pid 可以杀死这个进程

 

 

 

实例:

1.

[root@afeilinux-01 ~]# top

top - 14:12:18 up 1:34, 1 user, load average: 0.00, 0.01, 0.05 第一行,跟w查看的是一样的

Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie 第二行

总共进程 多少在运行的 多少休眠的 多少停止的 多少僵尸的

%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st 第三行

us(用户使用)+sy(系统使用)+id(空闲)=100% st表示被偷走的

KiB Mem : 1875504 total, 1589060 free, 123584 used, 162860 buff/cache 第四行(通常会关注)

物理内存 总共多少大 还剩多少 使用了多少

KiB Swap: 1999868 total, 1999868 free, 0 used. 1575888 avail Mem

交换分区

以下为以后主要关注的

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

RES 物理内存大小(单位KB)

112 root 20 0 0 0 0 R 0.3 0.0 0:01.95 kworker/1:2

512 root 20 0 305408 6372 4924 S 0.3 0.3 0:04.20 vmtoolsd

874 root 20 0 562432 16580 5912 S 0.3 0.9 0:00.88 tuned

1 root 20 0 128208 6844 4080 S 0.0 0.4 0:02.42 systemd

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

10.4 sar命令:

 

sar命令是非常全面的分析系统的命令

主要来查看网卡的流量,也可以查看内存或磁盘的状态。

sar被人们称作linux里面的瑞士军刀,也就是说内容非常复杂,功能非常丰富

 

要安装,yum install -y sysstat

 

直接运行sar,不加任何的参数,会报错。因为直接sar,他会去调用默认的历史文件(/var/log/sa)

sar的特性,他会每十分钟,会把系统的状态过滤一遍,抓取保存在文件里。这个文件就存在这个目录里

 

~1. sar -n DEV 网卡流量

sar -n DEV 1 动态显示网卡流量

sar -n DEV 1 10 动态显示网卡流量10次

rxpck/s 接收到的数据包(单位是数字,多少个)

txpck/s 发出去的数据包 (单位是数字,多少个)

rxkB/s 接受的数据量(单位是KB,多少量)

txkB/s 发出去的数据量(单位是KB,多少量)

后面三个不用管,不会超过0

接受的数据包,和接受的数据量多少算正常呢,几千个数据包都算正常,上万的话不正常(代表被攻击了)

下图为正常服务器的数据量或数据包的接收量

~2. sar -q 系统负载

通常会用到这个命令查看历史数据

~3. sar -b 磁盘读写

查看读和写

~4. sar -f /var/log/sa/saxx 历史文件

-f指定查看那个文件,或想看哪一天的

是个二进制文件,只能用sar -f看。不能cat

后面的xx代表那天生成的历史文件。这个目录下,最多保留一个月,我们要找哪天就写几号就可以了

/var/log/sarxx 历史文件

sarxx文件是可以cat的。这是与saxx文件的区别?

 

 

实例:

1.

[root@afeilinux-01 ~]# sar -n DEV 1 10

Linux 3.10.0-693.el7.x86_64 (axinlinux-01) 2018年07月10日 _x86_64_ (2 CPU)

 

23时06分16秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

接收或发出去的数据包(以数字显示) 接收或发出去的数据量(以KB显示)

23时06分17秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

23时06分17秒 ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00

 

23时06分17秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

23时06分18秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

23时06分18秒 ens33 1.00 1.00 0.06 0.41 0.00 0.00 0.00

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

10.5 nload命令:

 

 

 

~. yum install -y epel-release 要先安装epel-release

~. yum install -y nload 再安装nload

~1. 直接敲nload就会显示实时的监控网卡的界面。一个页面显示一个网卡,按向右的方向键可切换城下一个

~ 按 q 退出。

 

 

小知识点:

我们讲带宽的时候,通常说的是出去的带宽(outgoing)

假如我们买的带宽是100MB的,outgoing的curr都七八十兆了,就代表带宽快满了

假如有攻击的话,进来的数字(incoming)就会很大,看curr就会看的到

 

 

实例:

1.

[root@afeilinux-01 ~]# nload

Device ens33 [192.168.159.128] (1/2):

网卡的名字 地址 表示两个,按向右的方向键可切换

=====================================================================================================================================

Incoming:

进来的

 

 

 

Curr: 1.01 kBit/s 当前值

Avg: 1.21 kBit/s 平均值

Min: 1.01 kBit/s 最小值

Max: 2.17 kBit/s 最大值

Ttl: 9.25 MByte

Outgoing:

出去的

 

 

 

 

Curr: 8.70 kBit/s

Avg: 8.62 kBit/s

Min: 4.64 kBit/s

Max: 9.88 kBit/s

Ttl: 2.86 MByte

 

转载于:https://my.oschina.net/u/3866192/blog/3099348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值