w命令:
用于查看系统负载、显示已经登陆系统的用户列表,并显示用户正在执行的指令等信息
第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载。第二行开始以及下面所有的行,告诉我们的信息是,当前登录的都有哪些用户,以及他们是从哪里登录的等等
我们主要关注的load average后面的3个数值:第①个数值表示1分钟内系统的平均负载值;第②个数值表示5分钟内系统的平均负载值;第③个数值表示15分钟系统的平均负载值。这个值的意义是,单位时间段内CPU活动进程数。当然这个值越大就说明你的服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系。
如何查看CPU数量:grep -c "processor" /proc/cpuinfo; /proc/cpuinfo文件记录了cpu的详细信息。
uptime命令:
能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
vmstat命令:
显示虚拟内存状态,包括进程、内存、I/O等系统整体的运行状态。
w 查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力,但是具体是哪里(CPU, 内存,磁盘等)有压力就无法判断了。通过 vmstat 就可以知道具体是哪里有压力。vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu. 请重点关注一下r b swpd si so bi bo us wa几列
1)procs 显示进程相关信息
r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;
b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;
2)memory 内存相关信息
swpd :表示切换到交换分区中的内存数量 ,单位为KB;
free :当前空闲的内存数量,单位为KB;
buff :缓冲大小,(即将写入磁盘的); 例子:0000(CPU数据) --> 内存(buffer) -->磁盘
cache :缓存大小,(从磁盘中读取的); 例子:0000(磁盘数据) --> 内存(cache) --> CPU
3)swap 内存交换情况
si :由交换区写入到内存的数据量;
so :由内存写入到交换区的数据量;
4)io 磁盘使用情况
bi :从块设备读取数据的量(读磁盘);
bo: 从块设备写入数据的量(写磁盘);
5)system 显示采集间隔内发生的中断次数
in :表示在某一时间间隔中观测到的每秒设备中断数;
cs :表示每秒产生的上下文切换次数;
6)CPU 显示cpu的使用状态(us+sy+id=100%)
us :显示了用户下所花费 cpu 时间的百分比;
sy :显示系统花费cpu时间百分比;
id :表示cpu处于空闲状态的时间百分比;
wa :表示I/O等待所占用cpu时间百分比;
st :表示被偷走的cpu所占百分比(一般都为0,不用关注)
vmstat常见用法:vmstat 1 5; 表示每隔1s打印一次,共打印5次;当然你也可以使用vmstat 1持续打印,Ctrl + c 结束。
top命令:
可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用情况、内存使用情况以及交换分区使用情况。如上图所示,有些内容可以通过其他命令也能查看,这里关注:RES %CPU, %MEM, COMMAND
RES 进程所占内存大小
%CPU 使用CPU百分比
%MEM 使用内存百分比
COMMAND 进程启动命令名称
按 shift + m: 可以按照内存使用大小排序;shift + p:可以切回按照cpu使用大小排序;按数字 1: 可以列出各颗cpu的使用状态。字母q:退出!
一次性全部把所有信息输出出来而非动态显示:top -bn1 ; 一般使用在shell脚本。
sar命令:
sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等;这里介绍如何监控网卡流量
sar安装:yum install -y sysstat
sar查看网卡流量:sar -n DEV
IFACE这列表示设备名称
rxpck/s 表示每秒进入收取的包的数量
txpck/s 表示每秒发送出去的包的数量
rxbyt/s 表示每秒收取的数据量(单位Byte)
txbyt/s表示每秒发送的数据量。
后面几列不用关注。如果rxpck/s 那一列的数值大于4000,或者rxbyt/s那列大于5,000,000则很有可能是被***了,正常的服务器网卡流量不会高于这么多,除非是你自己在拷贝数据。
上面的命令是查看网卡流量历史的,如何时时查看网卡流量呢? 输入命令:sar -n DEV 1 5 即可;
也可以查看某一天的网卡流量历史,历史文件存放在/var/log/sa/目录下,如命令:sar -n DEV -f /var/log/sa/sa06;
查看系统历史负载:sar -q;
查看磁盘读写:sar -b
nload命令:
用来即时监看网路状态和各ip所使用的频宽
安装:yum install -y epel-release; yum install -y nload;
Incoming:进入网卡的流量; Outgoing:网卡出去的流量; 我们关注的当然是Curr这行的实时数据了。
监控io性能:
iostat命令:
关注%util这一列,表示占用CPU时间百分比;如果数值很大的话(50%+),说明磁盘IO很忙。
iotop命令:yum install -y iotop
能查看进程占用磁盘IO信息
free命令:
用于查看内存使用情况
total:内存总大小
used:真正使用的实际内存大小
free:剩余物理内存大小(没有被分配的内存)
shared:共享内存大小,不用关注
buff/cache:分配给buffer和cache的内存总共有多大。(区分两者!)
available:系统可使用的内存有多大
【total=used + free + buffer/cache】【available=free + buffer/cache剩余的部分】
ps命令:
用于查看系统进程。常用:ps -elf ; 或者 ps aux;两个命令显示的信息大同小异!
PID:表示进程的ID。有了pid,可以终止进程:kill pid;查看pid进程在哪里启动的:ls -l /proc/[pid]/ 就可以看到某pid在哪里启动的。
这里主要解释一下STAT列:表示进程的状态;如下;
D 不能中断的进程(通常为IO)
R 正在运行中的进程
S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态
T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态
W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配
X 已经死掉的进程(这个好像从来不会出现)
Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。
< 高优先级进程
N 低优先级进程
L 在内存中被锁了内存分页
s 主进程
l 多线程进程
+ 代表在前台运行的进程