w命令
在运维工作中,w命令是一个最常用的命令之一,它可以查看系统当前的负载情况
[root@localhost ~]# w
22:46:57 up 4 min, 1 user, load average: 0.02, 0.08, 0.05
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 22:46 1.00s 0.07s 0.02s w
该命令随简单,但是显示出来的内容却很有用;
- 第一行显示的内容为:1,系统时间 2,系统运行时间 3,登录用户数量 4,平均负载 (三个数值,第一个是1分钟内的平均负载,第二个是5分钟内的平均负载 ,第三个是15分钟内的平均负载)
- 第二行的内容是下面行的说明;1,登录用户。2,登录终端。3,登录时间点。 这里面比较重要的是第一行的load average 的三个数值中的第一个,一般情况下该值越大说明CPU负载越大,只要不超过CPU数量就没关系,查看CPU数量可以使用
cat /proc/cpuinfo
来实现 ,通过查看最后一段信息的processor ,如果是3 ,则为4个。(这里的个数说的不是物理CPU个数,比如机器里面有两个四核CPU,则这个数量就是8)
vmstat 监控系统状态
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 3565444 692 99364 0 0 22 2 23 27 0 0 99 0 0
使用w命令查看的是系统整体上的负载,无法判断具体是哪些硬件负载压力过大,这就用到了vmstat命令,vmstat显示的内容一共分为6部分,
-
procs 显示进程的相关信息
-
r(run):表示运行或等待CPU时间片的进程数。该数值如果长期大于CPU核数就意味着CPU不够用了。
-
b(block):表示等待资源的进程数,这里的资源指的是I/O、内存等。比如说有个数据CPU很快处理完了,但是硬盘在频繁的读写当中,该数据等待写入硬盘时,这个进程就是b的状态。该数据长时间大于1就需要找找问题了。
-
memory 显示内存的相关信息
-
swpd:表示切换到交换分区中的内存数量,单位为KB。
-
free:表示当前空闲的内存大小。单位KB
-
fuff:表示(即将写入磁盘的)缓冲大小,单位KB
-
cache:表示(从磁盘中读取的)缓存大小,单位KB
-
swap 显示内存的交换情况
-
si:表示由交换分区写内存的数据量,单位KB
-
so:表示由内存写入交换分区的数据量,
-
io显示磁盘的使用情况
-
bi:表示从块设备读取数据的量(读磁盘)
-
bo:表示从块设备写入数据的量(写磁盘)
-
system显示采集间隔内发生的中断次数
-
in:表示在某一时间间隔内观测到的每秒设备的中断次数
-
cs:表示每秒产生的上下文切换次数
-
cpu显示CPU的使用状态
-
us:显示用户下所花费CPU的时间百分比
-
sy:显示系统花费CPU的时间百分比
-
id:表示CPU处于空闲状态的时间百分比
-
wa:表示I/O等待所占用的CPU时间百分比
-
st:表示被偷走的CPU所占的百分比(一般为0,不用关注)
-
vmstat 2 10
意思是每两秒输出一次状态,输出10次。
top命令
top命令显示进程所占的系统资源
[root@localhost ~]# top
top - 23:35:14 up 52 min, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 360 total, 1 running, 359 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 3869044 total, 304728 used, 3564316 free, 692 buffers
KiB Swap: 2047996 total, 0 used, 2047996 free. 99664 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2346 root 20 0 133684 4924 3748 S 0.3 0.1 0:00.40 sshd
2433 root 20 0 123880 1868 1184 R 0.3 0.0 0:00.08 top
1 root 20 0 49976 6456 3740 S 0.0 0.2 0:03.34 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd
top命令执行的结果是动态输出的,它的特点是把占用系统资源最高的进程放到前面。
- RES这一项是进程所占内存大小
- %mem为使用内存大小百分比
- top -bn1可以一次性输出所有信息,但是它是静态的。
sar命令监控系统状态
sar命令很强大,可以监控几乎所有资源的状态,比如平均负载,网卡流量,磁盘状态,内存使用等。它可以输出历史信息,可以截取某个时间段的系统状态信息。如果没有安装该名利,可以使用` yum install -y sysstat 安装 。初次运行会报错,是因为还没生成相应的数据库文件。
- sar -n DEV 该命令能把当天就的网卡信息打印出来,每隔十分钟记录一次。
- sar -q 查看历史负载
nload 查看网卡流量
使用yum install -y epel-release ; yum install -y nload
nload这个包在扩展源里面,需要先安装扩展源。 执行这个命令可以很直观的查看当前网卡的流量情况。