Linux系统管理工具-vmstat、top、sar、nload、w命令

第十章 Linux日常运维管理

10.1 查看系统负载

w命令

w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

  • 查看系统负载(w)
[root@adai003 ~]# w
 11:17:30 up 13 min,  2 users,  load average: 0.00, 0.04, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      11:04   13:06   0.05s  0.05s -bash
root     pts/0    192.168.8.1      11:05    2.00s  0.02s  0.00s w

解析: 第一行从左边开始显示的信息依次是:时间,系统运行时间,登录用户数,平均负载(1min平均负载、5min平均负载、15min平均负载)。 load average:平均负载,即单位时间内CPU活动进程数,这个值越大说明服务器压力越大,一般该值不超过cpu数量就可以。

  • 查看服务器CPU数量(/proc/cpuinfo)
[root@adai003 ~]# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
stepping	: 9
microcode	: 0x12
cpu MHz		: 2493.938
cache size	: 3072 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 rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase smep xsaveopt
bogomips	: 4988.79
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:

说明: 在此,professor即为系统CPU数量。

uptime命令

uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

[root@adai003 ~]# uptime
 17:22:58 up  6:18,  2 users,  load average: 0.00, 0.01, 0.05

注: uptime得到的信息和w第一行结果是一样的。

tty解析

TTY设备包括虚拟控制台,串口以及伪终端设备。

在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:

  • 串行端口 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。这些串行端口所对应的设备名称是: /dev/tts/0(或/dev/ttyS0),/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0),(4,1)等,分别对应于DOS系统下的COM1、COM2等。
  • 伪终端 伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备,对master的操作会反映到slave上)。
  • 控制终端 如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。
  • 控制台 在Linux 系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上(这时也叫控制台终端)。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。只有在单用户模式下,才允许用户登录控制台。
  • 虚拟终端 在Xwindow模式下的伪终端.如在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到/dev/pts/name, name为当前用户名。

10.2 vmstat命令

vmstat命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),它可以报告关于进程、内存、I/O等系统整体运行状态。

vmwstat用法

语法:

  • vmstat 意思是静态显示内存状态一次。
[root@adai003 ~]# vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 755756    876 138904    0    0     3     0   26   40  0  0 100  0  0
  • vmstat [n] 在此n代表数字 意思是以n秒每次的频率动态显示内存状态(按Ctrl+c结束命令)。
[root@adai003 ~]# vmstat 1
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      0 755756    876 138936    0    0     3     0   26   40  0  0 100  0  0
 0  0      0 755740    876 138936    0    0     0     0   29   41  0  0 100  0  0
 0  0      0 755740    876 138936    0    0     0     0   25   30  0  0 100  0  0
 0  0      0 755740    876 138936    0    0     0     0   30   39  0  1 99  0  0
 0  0      0 755740    876 138936    0    0     0     0   24   34  0  0 100  0  0
^C
  • vmstat [n] [m] 意思是每n秒显示一次,显示m次后命令结束!
[root@adai003 ~]# vmstat 1 3
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      0 755756    876 138936    0    0     3     0   26   40  0  0 100  0  0
 0  0      0 755616    876 138936    0    0     0     0   31   42  0  0 100  0  0
 0  0      0 755616    876 138936    0    0     0     0   34   45  0  0 100  0  0
[root@adai003 ~]# 

说明:

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

10.3 top命令

top命令可以实时动态地(每3秒变一次)查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。其特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放在最前面,以确认是哪个进程占用内存。

top用法

语法: top [options] Options: -b:批量处理模式 -c:显示详细进程信息 -bn1:静态显示所有进程(该法多用于shell脚本)

[root@adai003 ~]# top
top - 23:28:08 up 12:24,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  84 total,   1 running,  83 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1008392 total,   754160 free,   113712 used,   140520 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   740452 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                    
  490 root      20   0  302840   6340   4780 S  0.3  0.6   1:42.80 vmtoolsd                   
    1 root      20   0  125048   3560   2400 S  0.0  0.4   0:02.13 systemd                    
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd                   
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.21 ksoftirqd/0                
    6 root      20   0       0      0      0 S  0.0  0.0   0:01.39 kworker/u128:0             
……

注: 在top状态下(按q退出),按shift+m可以按内存使用大小进行排序(默认以CPU使用占比排序),按shift+p恢复按CPU使用占比排序,,按数字1可以显示每个CPU的状态。

说明:

  • 第一行是负载信息
  • 第二行是进程信息
  • 第三行是CPU使用信息
  • 第四行是内存使用信息
  • 第五行是交换区使用信息
  • 最下面是进程详细信息:
    • PID:表示进程在系统中的id号,可配合kill命令结束某进程
    • RES:表示进程所用物理内存大小(单位:KB)
    • %MEM:表示内存使用百分比(单位:KB)

10.4 sar命令

sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态(如,平均负载,网卡流量,磁盘状态,内存使用等)计数器显示到标准输出设备。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示从零点开始到当前时刻的系统状态信息。

sar用法

使用‘yum install -y sysstat’安装该命令!初次使用sar命令(不加选项、参数)会报错,原因是sar命令还没有生成相应的数据库文件。其数据库保存在‘/var/log/sa/’目录下,该目录下存放两种文件,分别以‘sa日期’&‘sar日期’的格式命名(区别是sar文件在第二天生成,可以使用cat命令查看;sa文件实时<每个整‘10’分钟更新一次>生成,是二进制文件,无法查看),最多保留一个月。

语法: sar [options] [参数] Options: -f:从指定文件提取报告

  • sar -n DEV m n 查看网卡流量(在此m、n的用法同vmstat命令!)
[root@adai003 ~]# sar -n DEV 1 2
Linux 3.10.0-514.el7.x86_64 (adai003) 	2017年07月11日 	_x86_64_	(1 CPU)

00时13分32秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
00时13分33秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时13分33秒     ens33      1.02      1.02      0.06      0.19      0.00      0.00      0.00

00时13分33秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
00时13分34秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时13分34秒     ens33      1.98      1.98      0.12      0.45      0.00      0.00      0.00

平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:     ens33      1.51      1.51      0.09      0.32      0.00      0.00      0.00

说明:

  • rxpck/s:表示接收数据(包)的个数
  • txpck/s:表示发送数据(包)的个数
  • rxKB/s:表示接收的数据量
  • txKB/s:表示发送的数据量 注: 当rxpck/s的值大于4000或者rxKB/s的值大于5000时则可能是在被攻击(需配合抓包工具进一步确认)!
  • sar -q 查看系统负载(配合-f选项使用,查看历史负载)
[root@adai003 ~]# sar -q -f 
Linux 3.10.0-514.el7.x86_64 (adai003) 	2017年07月11日 	_x86_64_	(1 CPU)

00时10分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
00时20分01秒         1       101      0.00      0.01      0.05         0
00时30分01秒         2       102      0.00      0.01      0.05         0
平均时间:         2       102      0.00      0.01      0.05         0
  • sar -b 查看磁盘信息
[root@adai003 ~]# sar -b 1 3
Linux 3.10.0-514.el7.x86_64 (adai003) 	2017年07月11日 	_x86_64_	(1 CPU)

00时36分28秒       tps      rtps      wtps   bread/s   bwrtn/s
00时36分29秒      0.00      0.00      0.00      0.00      0.00
00时36分30秒      0.00      0.00      0.00      0.00      0.00
00时36分31秒      0.00      0.00      0.00      0.00      0.00
平均时间:      0.00      0.00      0.00      0.00      0.00

10.5 nload命令

使用前需要先安装该命令:

[root@adai003 ~]# yum install -y nload

注: 在安装此包前需要先安装yum扩展源:epel-release。

用法

[root@adai003 ~]# nload

注: 在该界面显示系统网络动态信息,可使用方向键在不同网卡之间进行切换,按q键退出,根据实时网速和总网速的比较可以评估网络状态!

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券