命令 w 、vmstat、top、sar、nload

Linux 日常运维管理技巧

监控系统状态

1、使用 w 查看系统负载

首先来使用 w 命令,见下图,

上图红色框框的内容, 22:23:31 表示系统当前的时间,up 0 min 表示启动多长的时间,刚刚启动 0 分钟。下面的 date 命令也可以查看当前的日期和时间。1 user 表示目前登录一个用户,登录的用户可以从下面的两行看到具体信息,TTY 这边,如果是网络登录的话,就会显示成 pts/0 或 pts/1 。
上面是使用 PuTTY 登录的终端,接着来看一下原始终端,也就是虚拟机登录的信息,见下图,

具体显示的信息和上面差不多,但是这边可以看到,有两个用户登录 2 users ,分别是 tty1 和 pts/0 ,tty 之前讲过,有6个级别。

load average:0.72,0.20,0.07 这条信息就比较关键,显示的是系统平均负载。平时看的最多的就是这一部分,这三个数字分别表示1分钟,5分钟,15分钟,这个时间段内系统的平均负载值是多少。这三个数值的含义跟CPU有关系,表示的意义是,单位时间段内CPU活动进程数。当然这个值越大就说明你的服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系,如果服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力,否则就要关注一下了。这些数值为0也不好,说明服务器空闲着,太浪费了。那么这些数值什么时候才是最理想的状态?这时候就要查看 CPU 数量,这边的CPU数量指的是逻辑CPU,而不是物理CPU,使用命令 cat /proc/cpuinfo ,回车,见下图,

这边只需要关注上图红色框框的内容,0 表示只有一个逻辑CPU。load average 这边的第一数值为 1 的时候,最为理想,既没有空着,也没有太多负载。其他两个数值同理,一般最为关注的是第一个数值。只要数值不超过CPU的数量,就没有太大问题。
‘/proc/cpuinfo’ 这个文件记录了cpu的详细信息。目前市面上的服务器通常都是2颗4核cpu,在 Linux 看来,它就是8个cpu。查看这个文件时则会显示8段类似的信息,而最后一段信息中processor : 后面跟的是 ‘7’ 所以查看当前系统有几个cpu,我们可以使用这个命令: grep -c ‘processor‘ /proc/cpuinfo 而如何看几颗物理cpu呢,需要查看关键字 “physical id”, 由于我的虚拟机只有一个cpu所以并未显示关于 “physical id” 的信息。
还有一个命令 uptime ,见下图,

结果跟 w 命令的第一行一摸一样,所以一般都使用 w 命令来查看。

2、vmstat 命令

上面讲的 w 查看的是系统整体上的负载,通过看这些数值可以知道当前系统有没有压力,但是具体是哪里(CPU, 内存,磁盘等)有压力就无法判断了。这时候就需要用到 vmstat 命令,可以知道具体是哪里有压力。vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu,见下图,

1)procs 显示进程相关信息
r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;
b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;
2)memory 内存相关信息
swpd :表示切换到交换分区中的内存数量 ;
free :当前空闲的内存数量;
buff :缓冲大小,(即将写入磁盘的);
cache :缓存大小,(从磁盘中读取的);
3)swap 内存交换情况
si :由交换区写入到内存的数据量;
so :由内存写入到交换区的数据量;
4)io 磁盘使用情况
bi :从块设备读取数据的量(读磁盘);
bo: 从块设备写入数据的量(写磁盘);
5)system 显示采集间隔内发生的中断次数
in :表示在某一时间间隔中观测到的每秒设备中断数;
cs :表示每秒产生的上下文切换次数;
6)CPU 显示cpu的使用状态
us :显示了用户下所花费 cpu 时间的百分比;
sy :显示系统花费cpu时间百分比;
id :表示cpu处于空闲状态的时间百分比;
wa :表示I/O等待所占用cpu时间百分比;
st :表示被偷走的cpu所占百分比(一般都为0,不用关注);

以上所介绍的各个参数中,我们经常会关注r列,b列,和wa列,三列代表的含义在上边说得已经很清楚。IO部分的bi以及bo也是要经常参考的对象。如果磁盘io压力很大时,这两列的数值会比较高。另外当si, so两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。
我们使用 vmstat 查看系统状态的时候,通常都是使用下图的形式来看的:

vmstat 1 显示的是,每隔1秒打印一次状态,一直打印,直到我们按 Ctrl + c 结束。还有另外一种方式,见下图,

vmstat 1 5 表示每隔一秒钟打印一次状态,共打印5次,然后命令自动结束。这边显示的结果 里面,我们一般只需关注这几列:r、b、swpd、si、so、bi、bo、us、wa。r(run)表示有多少个进程处于运行状态。b(block)表示进程被CPU以外的资源(比如硬盘、网络)给阻断了,处于一个等待的状态。swpd 交换分区,当内存不够的时候,系统会把内存里的一部分数据释放一些出来,临时放到 swpd 空间里面,当这一列的数据没有变化的时候,说明没有什么问题,如果这一列的数据一直在跳动的话,就说明内存不够。si 和 so 这两列数据和 swpd 是有关系的,他们的单位都是KB,si 是由swpd写入到内存的数据量,so 是由内存写入到swpd的数据量,i 是in,o 是out。bi 和 bo 这两列数据和磁盘是有关系的,bi 是从块设备读取数据的量(读磁盘),bo 是从块设备写入数据的量(写磁盘),这两个数据很大的话,说明磁盘在频繁的读和写。bi 和 bo 的数据很大,必然造成 b 列的数据增加。us 表示用户级别的,显示了用户下所花费 cpu 时间的百分比,这个数据是不会超过100的,如果这个数字长时间大于 50 ,也是说明资源不够。us + sy(系统花费CPU百分比) + id(空闲百分比) = 100 。wa(wait 等待)与 b 类似,表示等待 CPU 的百分比,即由多少个进程在等待CPU,如果这个数很大,说明CPU不够用。

3、top 命令

查看进程使用资源情况。这个命令用于动态监控进程所占系统资源,每隔3秒变一次。它的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用情况、内存使用情况以及交换分区使用情况。其实上面这些内容可以通过其他命令来查看,所以用top重点查看的还是下面的进程使用系统资源详细状况。这部分东西反映的东西还是比较多的,不过需要你关注的也就是几项:%CPU, %MEM, COMMAND 。RES 这一项为进程所占内存大小,而 %MEM 为使用内存百分比。在 top 状态下,按 “shift + m”, 可以按照内存使用大小排序。按数字 ‘1’ 可以列出各颗cpu的使用状态。
输入 top ,回车,见下图,

上图是动态显示的,每隔3秒变一次。第1行显示的内容和命令 w 是一样的。第2行显示的是进程的状态,92个任务,1个正在运行的任务,91个休眠任务,0个停止任务,0个僵尸任务。僵尸进程的意思就是主进程被意外中止,一些子进程还留着,没有人管。第3行是CPU百分比,也可以验证 us + sy + id = 100 这个公式,ni 、hi 和 si 这三个不用理解,st 表示被偷走的CPU百分比。这边比较关注的是 us ,如果长时间数值在60%以上,太耗费CPU,所以平时需要多关注这个数值。系统负载值可以很高,而 us 可以很低。下面2行是内存使用情况,第4行是物理内存,第5行是交换分区,通常情况下会比较关注第4行,交换分区。总的内存是999936,空闲的是696656,使用中是125512,关于 buff/cache 后面再说。
接着往下看,动态呈现的这些内容才是我们要关注的东西,默认是按CPU百分比(%CPU)排序,%CPU数值大的排在前面。%MEM为使用内存百分比,RES是物理内存大小,单位是K。假如我现在想让排序按%MEM来排序,要怎么操作呢?按下 ctrl + m ,也就是大写的M,见下图,

现在就是按%MEN的大小来排序,排在第一位的是 firewalld。现在想要换回默认的%CPU排序,直接按下 ctrl + p,即大写的 P ,就可以了。见下图,

还有一个选项,数字 1 ,按数字 ‘1’ 可以列出各颗cpu的使用状态,见下图,

按下 1 之后,可以注意到上图红色框框的内容,与上上图显示的内容还是有差别的,现在显示的是指定CPU的情况。%CPU0是单核,所以只有一行。再按一次 1 ,就恢复到默认状态,默认情况下查看的是平均值。
按字母 q ,就可以退出 top 查看的状态。
还有一种用法是 top -c,输入 top -c ,回车,见下图,

上图中,我们可以看到具体的命令的进程,看到的是全部的路径名称。单纯使用命令 top 的 话,只能查看最后面进程的名字。
还有一种用法,输入命令 top -bn1 ,回车,见下图,



上图把所有的进程,全部一次性列出,呈静态显示。此命令适合在写shell脚本的时候应用。
这边想要终止一个进程,使用命令 kill+PID号,回车,即可。

4、sar 命令

sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果你系统没有安装这个命令,请使用 yum install -y sysstat 命令安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)。它的数据库文件在 “/var/log/sa/” 目录下,默认保存一个月。因为这个命令太过复杂,所以这边只介绍几个。

安装 sar 命令,见下图,


安装完毕后运行 sar ,见下图,

因为刚刚安装了 sar 命令,所有执行命令 ls /var/log/sa ,没有结果,需要等十分钟才会生成文件,因为每隔十分钟会生成一个文件。所以需要给 sar 命令加上具体的选项和参数,见下图,

1 表示每隔 1秒,10 表示显示10次。上图红色框框显示有两个网卡,分别是 lo 和 ens33 。第1列是时间,第2列是网卡的名字(IFACE)表示设备名称,第3列 rxpck/s 表示每秒进入收取的包的数量,第4列 txpck/s 表示每秒发送出去的包的数量,第5列 rxkb/s 表示每秒收取的数据量(单位Byte),第6列 txkb/s表示每秒发送的数据量。后面3列不需要关注,始终都是0.00。
如果有一天你所管理的服务器丢包非常严重,那么你就应该看一看这个网卡流量是否异常了,如果rxpck/s 那一列的数值大于4000,或者rxkb/s那列大于5,000,000则很有可能是被攻击了,正常的服务器网卡流量不会高于这么多,除非是你自己在拷贝数据。
接着来查看 sar 命令,见下图,

命令 sar 的结果,正常只会出现第一行,出现上图情况,是因为我重启过虚拟机。然后查看 ls /var/log/sa ,就有出现了文件 sa20 。这个 sa 文件后面是以当天日期命名的,今天是2018年3月20日,所有文件名是 sa20 。
另外也可以查看某一天的网卡流量历史,使用-f选项,后面跟文件名,如果系统格式 Redhat 或者 CentOS 那么 sar 的库文件一定是在 /var/log/sa/ 目录下的。见下图,

上图命令,可以查看历史数据的,例如昨天的 sa19 ,前天的 sa18 。这些文件最长可以保留一个月,一个月后就会自动清空。
查看系统负载,见下图,

查看系统磁盘,见下图,

查看磁盘读和写,见下图,

5、nload 命令

监控网卡流量,这个命令默认是没有安装的,具体操作见下图,



安装 nload 之前,需要先安装 epel-release ,安装完毕之后,接着往下操作,直接输入命令 nload ,回车,进入下图,

上图显示的信息是动态的,这只是其中一个网卡 ens33 ,按向右的方向键 → ,即可查看另一个网卡 lo 的信息,见下图,

按向左的方向键 ← ,又可以回到上一个网卡 ens33 ,可以来回切换。按字母 q 就可以退出这个界面。

总结:
w 查看系统负载
date 查看当前的日期和时间
vmstat n 每隔n秒打印一次状态
vmstat n m 每隔n秒打印一次状态,一共打印m次
top 查看进程使用情况
大写的M %MEN内存排序
大写的P %CPU排序。
数字 1 查看指定每个CPU的使用状态
字母 q 退出 top 查看状态
top -c 查看具体的命令的进程
top -bn1 静态的显示全部进程,适合在写shell脚本的时候应用
sar -n DEV 查看网卡流量历史的
sar -q 查看系统负载
sar -b 查看系统磁盘
nload 监控网卡流量

原文地址:http://blog.51cto.com/13503302/2090292

时间: 2024-11-08 11:12:18

命令 w 、vmstat、top、sar、nload的相关文章

25.Linux系统管理技巧-w,vmstat,top,sar,nload命令

Linux运维管理 一 w 命令,查看当前系统的负载 用法如下 [[email protected] ~]# w 15:15:19 up 2 min, 1 user, load average: 0.05, 0.08, 0.04 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT root pts/0 192.168.72.1 15:14 7.00s 0.08s 0.00s w 第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,

10.1-10.5 w查看系统负载 vmstat , top, sar, nload

七周一次课(3月19日)10.1 使用w查看系统负载10.2 vmstat命令10.3 top命令10.4 sar命令10.5 nload命令  10.1 使用w查看系统负载 介绍 W命令 #W [[email protected] sed]# w 14:22:44 up  4:29,  1 user,  load average: 0.00, 0.01, 0.05 USER     TTY      FROM             [email protected]   IDLE   JCP

Linux系统日常管理1 w,vmstat,top,sar,free,ps监控命令

一. w, uptime 命令w, uptime [[email protected] ~]# w  04:02:31 up 1 day,  8:25,  1 user,  load average: 0.00, 0.00, 0.00 USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT root     pts/0    192.168.21.103   23:38    0.00s  0

日常运维管理,w,wmstat,top,sar,nload

监控系统状态查看历史文件 nload 查看网卡实时流量状态左右方向键,可以查看不同网卡信息 原文地址:http://blog.51cto.com/13528516/2063992

0.1 使用w查看系统负载 - 10.2 vmstat命令 - 10.3 top命令 - 10.4 sar命令 - 10.5 nload命令

- 10.1 使用w查看系统负载 - 10.2 vmstat命令 - 10.3 top命令 - 10.4 sar命令 - 10.5 nload命令 # 10.1 使用w查看系统负载 ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170829/230935727.png?imageslim) - w命令 ``` [[email protected] ~]# w  23:10:04 up  2:17,  2 users,  load average:

七周一次课(1月22日) 10.1 使用w查看系统负载 10.2 vmstat命令 10.3 top命令 10.4 sar命令 10.5 nload命令

七周一次课(1月22日)10.1 使用w查看系统负载10.2 vmstat命令10.3 top命令10.4 sar命令10.5 nload命令 ==================================================================================================================================================================================

Linux日常管理技巧(1):w,top,vmstat,sar命令

一.w命令 linux管理员最常用的命令就是这个 w 了,该命令显示的信息还是蛮丰富的.第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载.第二行开始以及下面所有的行,告诉我们的信息是,当前登录的都有哪些用户,以及他们是从哪里登录的等等.其实,在这些信息当中,我们最应该关注的应该是第一行中的 'load average:' 后面的三个数值. 第一个数值表示1分钟内系统的平均负载值:第二个数值表示5分钟内系统的平均负载值:第三个数值表示15分钟系统的平均负载值. 这几个个值

69.liunx日常管理:w,top,vmstat,sar命令

一:W命令描述 w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令.执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序.单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息. 命令语法 W [选项][参数] 选项 -h:不打印头信息:-u:当显示当前进程和cpu时间时忽略用户名:-s:使用短输出格式:-f:显示用户从哪登录:-V:显示版本信息. 参数 用户:仅显示指定用户. 注:一般在使用的过程中 直接 输入 W 即可第一行从左面开始显示的信

Linux监控命令整理(top,free,vmstat,iostat,mpstat,sar,netstat)

1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...] -b : 批次模式运行.通常用作来将top的输出的结果传送给其他程式或储存成文件 -c : 显示执行任务的命令行 -d : 设定延迟时间 -h : 帮助 -H : 显示线