linux系统管理中常用的命令有w vmstat top sar nload命令:
1、w命令:查看当前系统的负载和登录情况:
w命令用于显示已经登录系统的用户列表,并会显示每个用户正在执行的命令,单独执行w则会显示所有用户,也可以指定用户名称,仅显示某位用户的相关信息:
[root@localhost awk]# w 12:01:04 up 248 days, 17:01, 2 users, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 111.196.244.206 11:18 0.00s 0.20s 0.00s wroot pts/1 111.196.244.206 12:00 38.00s 0.01s 0.01s -bash===== 当前时间 系统运行时间 登录用户数 平均负载:1min 5min 15min 用户 通过那个tty登录 登录IP地址 登录时间 空闲CPU
注释:第一行从左边开始依次显示信息为时间、系统运行时间、登录用户数、平均负载(1min平均负载、5min平均负载、15分钟平均负载):
load average:平均负载:我们着重看第一个值,它表示单位时间内(这里其实就是1分钟内)使用CPU的活动进程数,值越大说明服务器的压力越大,一般该值不超过服务器的CPU的数量就可以了:
[root@localhost ~]# w 17:59:46 up 248 days, 23:00, 1 user, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 111.196.244.206 17:56 2.00s 0.01s 0.00s w[root@localhost ~]# uptime 17:59:48 up 248 days, 23:00, 1 user, load average: 0.00, 0.01, 0.05
2、查看服务器CPU的数量:
[root@localhost ~]# cat /proc/cpuinfoprocessor : 0 #数量从0开始,0表示一个cpu:vendor_id : GenuineIntelcpu family : 6model : 85model name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHzstepping : 4microcode : 0x1cpu MHz : 2500.014cache size : 33792 KBphysical id : 0siblings : 1core id : 0cpu cores : 1apicid : 0initial apicid : 0fpu : yesfpu_exception : yescpuid level : 13wp : yesbogomips : 5000.02clflush size : 64cache_alignment : 64address sizes : 46 bits physical, 48 bits virtual
注意:主要看processor这一行的数字是几,就代表有几个CPU,一般从0开始的:
uptime命令:用来显示当前系统中的时间及运行时间,登录用户数,及负载情况,同w的命令相等:
[root@localhost ~]# uptime 18:13:42 up 248 days, 23:14, 1 user, load average: 0.04, 0.09, 0.08
要点记忆:
tty:表示本地登录,自己在当前设备里进入,则显示的tty1:(tty有1-到7个终端):
pst/0:表示远程登录:
3、vmstat命令:(virtual memory status)=虚拟内存状态,它可以报告进程、内存、I/O等系统整体运行状态:
语法:
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 3 0 0 138704 132296 665348 0 0 0 2 1 1 0 0 100 0 0
vmstat n #n表示{数字}, 以n秒每次的频率动态显示状态:---按ctrl+c结束命令:
[root@localhost ~]# 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 3 0 0 138560 132296 665376 0 0 0 2 1 1 0 0 100 0 0 0 0 0 138544 132296 665380 0 0 0 0 57 169 0 0 100 0 0 0 0 0 138544 132296 665380 0 0 0 0 45 150 0 1 99 0 0 0 0 0 138544 132296 665380 0 0 0 0 45 143 0 0 100 0 0 1 0 0 138544 132296 665380 0 0 0 0 55 161 0 0 100 0 0^C
vmstat n m #以每n秒显示一次,显示m秒后命令结束:
[root@localhost ~]# vmstat 1 3 #以1秒显示一次,显示三次: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 0 138624 132296 665376 0 0 0 2 1 1 0 0 100 0 0 0 0 0 138640 132296 665376 0 0 0 0 57 172 1 1 98 0 0 0 0 0 138640 132296 665376 0 0 0 0 35 138 0 0 100 0 0
注释:
procs进程相关:
r:(run):表示运行或等待cpu运行的进程数,排着队等待cpu资源的进程数依然是处于运行状态,实际上某一时刻1个cpu只能有一个进程占用,该数值如果长期大于服务器cpu的个数,则说明cpu资源不够用了:
b:(block):表示等待资源的进程数,如等待I/O、内存等,这列的值如果长时间大于1,则需要关注一下:
memory内存相关:
swap:交换分区(当内存不够时,系统把内存中的数据放在swap分区里)切换到交换分区里的内存数量,该数值不断变化说明内存不足:KB:
free:表示当前空闲的内存量:单位为KB:
buff:表示(即将写入磁盘的)缓冲大小:单位为KB:
cache:表示(从磁盘中读取的)缓存大小:单位为KB:
swap内存交换相关:单位为KB: 以内存为参照物:
si:=storage in : 表示有多少KB的数据量从swap交换分区写入到内存中:单位为KB:
so:=storage out :表示有多少KB的数据量从内存里写入到swap交换分区中:单位为KB:
io磁盘相关:
bi:=block in 表示从磁盘读取数据(写入内存)的量:(即读磁盘):
bo:=block out 表示(从内存中读取)写入到磁盘的数据量:(即写磁盘):
system显示采集间隔内发生的中断次数:
in:表示在某一时间间隔内观测到的每秒设备的中断次数:
cs:表示每秒产生的上下文切换次数:
CPU显示cpu的使用状态:
us:用户态cpu(网站、mysql、存储等)表示用户资源所花费CPU的时间百分比:(当改值长时间>50说明cpu数量不足)
sy:系统态cpu(sshd、init等)表示系统资源所花费的CPU的时间百分比:
id:当CPU处于空闲状态的百分比:
wa:=wait,表示等待CPU的百分比:(该值很大,说明CPU不够用):
st:表示被偷走的CPU所占百分比(一般都为0,不用关注):
注释:在以上各项参数中:需要关注的r、b、wa这3列:
io部分的bi和bo的值会比较高,说明磁盘压力很大:
swap部分的si和so的值比较高且不断变化,则说明内存不够了:
4、top命令:
动态显示,每3s变化一次, 会综合显示当前系统的运行状态综合信息,特点是会把占用系统资源(CPU、内存、磁盘I/O等)最高进程放在最前面,以确认那个进程占用的资源比较多:
用法:top options
options:
-b:批量处理模式:
-c:显示详细进程信息:
-bn1:静态显示所有进程(该法多用于shell脚本):
top: 动态显示,每3s变化一次:
top -bn1:COMMAND那一列会显示具体的程序命令:--绝对路径:
tcp -c:静态的显示所有的信息(适合写脚本时用):
[root@localhost ~]# top #动态显示所有信息:top - 18:01:55 up 250 days, 23:02, 2 users, load average: 0.00, 0.01, 0.05Tasks: 64 total, 1 running, 63 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 1016396 total, 138204 free, 80408 used, 797784 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 765916 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 43208 3280 2052 S 0.0 0.3 2:50.73 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:02.22 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:51.67 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:57.60 kworker/u2:0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 9:50.63 rcu_sched 10 root rt 0 0 0 0 S 0.0 0.0 1:49.67 watchdog/0 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
注释:在top状态下,(按q则退出):
按shift+m或者M则切换到以内存使用大小进行排序(默认是以cpu排序):
按shift+p或者P则切换回以cpu使用大小排序:
按数字1则显示各个CPU的状态:
简要说明:
第一行是负载相关信息:运行时间:当前登录用户:相关负载信息:
第二行是进程信息:系统所有进程:正在运行(run):处于休眠状态(sleep):停止状态(stop):僵尸进程(zombie):
第三行是CPU使用信息:用户态:系统态:优先级:空闲的:等待的:被偷窃的:
第四行是内存使用信息:总内存大小(total):剩余内存(free):已使用内存(used):buff/cache(缓冲/缓存):
第五行是交换区使用信息:也是总大小:剩余内存:已使用内存等:
进程:进程号(PID):用户(root):物理内存大小(RES):状态(S):cpu百分比(%CPU):内存百分比(%MEM):时间(TIME):进程(COMMAND):
5、sar命令: 监控系统状态:
sar命令被称为瑞士军刀,自身很强大,可以监控系统所有资源的状态,比如平均负载、网卡流量、磁盘状态、内存使用,他还可以打印历史天数的信息:每十分钟统计一次,可以显示从零点到当前时刻的系统状态信息:
如果sar命令没有安装:则需要安装如下安装包:
yum install -y sysstat
初次sar命令(不加选项、参数)会报错,原因是sar命令没有生成相应的数据库文件,数据库文件保存在/var/log/sa/目录下:每十分钟统计一次:
[root@localhost ~]# ls /var/log/sa/sasa01 sa06 sa11 sa16 sa21 sa26 sar01 sar06 sar11 sar16 sar21 sar27 sa02 sa07 sa12 sa17 sa22 sa27 sar02 sar07 sar12 sar17 sar22 sar28 sa03 sa08 sa13 sa18 sa23 sa28 sar03 sar08 sar13 sar18 sar23 sar29 sa04 sa09 sa14 sa19 sa24 sa29 sar04 sar09 sar14 sar19 sar25 sar30 sa05 sa10 sa15 sa20 sa25 sa30 sar05 sar10 sar15 sar20 sar26
注意如上图:数据库文件保存在/var/log/sa目录下,最多保留一个月,该目录下会存在两种文件,分别以"sa日期"和"sar日期"来命名:区别如下:
sa类的文件实时每整10分钟更新(生成)一次,是二进制文件,无法cat查看,只能使用sar -f选项来查看:
sar类文件在第二天生成,可以使用cat命令查看:
语法:sar options [参数]
options:
-n DEV:查看网卡流量:
-f:从指定的文件中读取往日流量:
1、sar -n DEV n m 查看网卡流量(在此n m的用法和vmstat相同):
自己输入sar -n DEV 直接显示当天凌晨到此时此刻的流量:
[root@localhost ~]# sar -n DEV 1 3 #网卡流量每1秒一次,显示三次:Linux 3.10.0-514.26.2.el7.x86_64 (localhost) 07/24/2018 _x86_64_ (1 CPU)06:46:58 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s06:46:59 PM eth0 1.00 1.00 0.06 0.12 0.00 0.00 0.0006:46:59 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.0006:46:59 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s06:47:00 PM eth0 1.00 1.00 0.06 0.19 0.00 0.00 0.0006:47:00 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.0006:47:00 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s06:47:01 PM eth0 1.01 1.01 0.07 0.40 0.00 0.00 0.0006:47:01 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/sAverage: eth0 1.00 1.00 0.06 0.24 0.00 0.00 0.00Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
注释:
IFACE:网卡名称:eth0或者lo:
rxpck/s:表示接收到的数据(包)的个数:一般rxpck/s为2000则为正常:
txpck/s:表示发送的数据(包)的个数:
rxkB/s:表示接受的数据量,单位为KB:
txkB/s:表示发送的数据量,单位为KB:
注意:当rxpck/s的接受的数据包大于4000或者rxKB大于5000时则有可能被攻击(需配合抓包工具进行确认):
附记:receive:收到: trasmit:发送:
sar -q :查看系统负载:
[root@localhost ~]# sar -q 1 3Linux 3.10.0-514.26.2.el7.x86_64 (localhost) 07/24/2018 _x86_64_ (1 CPU)10:11:21 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked10:11:22 PM 0 95 0.00 0.01 0.05 010:11:23 PM 0 95 0.00 0.01 0.05 010:11:24 PM 0 95 0.00 0.01 0.05 0Average: 0 95 0.00 0.01 0.05 0[root@localhost ~]#
sar -b :查看磁盘信息:
[root@localhost ~]# sar -q 1 3Linux 3.10.0-514.26.2.el7.x86_64 (localhost) 07/24/2018 _x86_64_ (1 CPU)10:11:21 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked10:11:22 PM 0 95 0.00 0.01 0.05 010:11:23 PM 0 95 0.00 0.01 0.05 010:11:24 PM 0 95 0.00 0.01 0.05 0Average: 0 95 0.00 0.01 0.05 0[root@localhost ~]#
6、nload命令:
如果此命令木有安装:需要安装如下包:
yum install -y epel-release;;yum install -y nload
注:以上命令在扩展源里面,所有需要先安装扩展源才可以:
[root@localhost ~]# nload Device eth0 [172.17.192.247] (1/2):======================================================================Incoming: Curr: 2.98 kBit/s #当前流量: Avg: 2.14 kBit/s #平均流量: Min: 2.05 kBit/s #最小值: Max: 3.08 kBit/s #最大值: Ttl: 312.16 MByteOutgoing: Curr: 17.70 kBit/s Avg: 16.60 kBit/s Min: 6.57 kBit/s Max: 20.86 kBit/s Ttl: 286.99 MByte注:我们主要关注outgoing的流量即可:
注释:在该页面会显示系统网卡流量的信息,可以通过方向键来回切换其他网卡流量:根据实时网速和最大流量值可以评估当前的网络带宽情况: