查看Linux系统状态的常用命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查看Linux系统状态的常用命令相关的知识,希望对你有一定的参考价值。
一、查看CPU的详细情况
判断服务器CPU的情况依据如下:
a. 具有相同的core id 的PUC是由同一个core的超线程。
b. 具有相同的physical id 的CPU是同一个CPU封闭的线程或核心
方法1:
物理个CPU个数如下:
以下为2个CPU
[[email protected] ~]# cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l 2
每个物理CPU中的core的个数(即核数):
[[email protected] ~]# cat /proc/cpuinfo |grep "cpu cores"|sort|uniq|wc -l 1
逻辑CPU的个数
[[email protected] ~]# cat /proc/cpuinfo |grep "process"|wc -l 24
方法2:
lscpu命令查看
[[email protected] ~]# lscpu Architecture: x86_64 ==>架构为64位 CPU op-mode(s): 32-bit, 64-bit ==>32位和64位模式 Byte Order: Little Endian ==>大段小段 CPU(s): 24 ==>CPU线程数 On-line CPU(s) list: 0-23 ==>CPU线程0到23 Thread(s) per core: 2 ==>每个盒数有多少线程 Core(s) per socket: 6 ==>CPU的盒数 Socket(s): 2 ==>CPU的插槽 NUMA node(s): 2 ==>非统一内在访问,并不重要 Vendor ID: GenuineIntel ==>CPU厂商 CPU family: 6 ==>CPU的家族系列 Model: 62 ==>CPU的型号 Stepping: 4 ==>步进 CPU MHz: 2600.082 ==>CPU主频 BogoMIPS: 5199.24 ==>Linux操作系统中衡量计算机处理器运行速度的一种尺度 Virtualization: VT-x ==>是否支持虚拟化 L1d cache: 32K ==>一级缓存32K L1i cache: 32K ==>一级缓存32K L2 cache: 256K ==>二级缓存256k L3 cache: 15360K ==>三级缓存15360k NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22 ==>NUMA节点0 NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23 ==>NUMA节点1
二、查看linux服务器的内存使用情况
查看linux下内存使用情况,可以使用命令free -m。注意此命令在linux有效,在FreeBSD中没有此命令。
[[email protected] ~]# free -m total used free shared buffers cached Mem: 15933 13142 2791 0 437 8810 -/+ buffers/cache: 3894 12038 Swap: 16383 10 16373
total:内存总数
used:已经使用的内在数
free:空闲的内存数
shared:多个进程共享的内存总额
-buffers/cache:(已用)的内存数,即used-buffers-cached
+buffers/cache:(可用)的内存数,即free+buffers+cached
结论:
可用内存的计算公式为:
可用内存=free+buffers+cachaed,即2791+437+8810=12038MB
疑问:
为什么windwos下内存才用了200M不到,但是linux上free才有232MB可用呢?
其实是Linux内存机制问题,以下举例说明,-m的意思是用M个字节来显示内容。
[[email protected] ~]# free -m total used free shared buffers cached Mem: 15933 13142 2791 0 437 8810 -/+ buffers/cache: 3894 12038 Swap: 16383 10 16373
在第一部分Mem行中有如下参数
total:内存总数,即15933MB
used:已经使用的内存数,即13142MB
free:空闲的内存数,即2791MB
shared:当前已经废弃不用,总是0
buffers:缓存的内存数,即437MB
cache page:缓存的内存数,即8819MB
其中,内存总数与已使用内存数和空闲内存数的关系是
total(15933M)=used(13142M)+free(232M)
在第二部分内容(-/+buffers/cache)中各参数如下所示:
(-buffers/cache):used 内存数,即3894(指的是第一部分Mem行中的used(13142MB)-buffers(437MB)-cached(8810MB)=3894MB)
(+buffers/cache):free内存数,即12038(指的是第一部分Mem行中的free(2791MB)+buffers(437MB)+cache(8810MB)=12038MB)
-buffers/cache是实实在在用掉的内存
+buffers/cache是实实在在可用的内存
第三部分是指交换分区(swap)分区
补充
为什么第一部分的free会那么少?从两个度来说明
角度一:系统角度上讲buffers和cache都属于被使用的,为什么被使用呢?因为buffer和cache都属于被使用,所以它认为free只有2791MB,当程序使用
内存时,buffer/cached很快就会被使用
角度二:应用角度来讲,主要看used和free为主。
另外,为了提高磁盘和内存的存储效率,还采取两种cache方式,Buffer cache和Page Cache,前者针对磁盘的块的读写,后者针对文件inode的读写。
这些Cachae能有效的缩短I/O系统调用(比如:read(读),write(写),getdents(系统调用)
三、Linux服务器的硬盘使用情况
1、查看硬盘的信息
以下这是块21.5G的硬盘
[[email protected] ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000295a5 Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 2220 17619968 83 Linux /dev/sda3 2220 2611 3145728 82 Linux swap / Solaris
2、查看磁盘的使用情况
下面是查看磁盘占用情况(-h是human)
[[email protected] ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 17G 1.7G 15G 11% / tmpfs 935M 0 935M 0% /dev/shm /dev/sda1 194M 34M 151M 19% /boot
下面是查看inode占用情况(-i是inode)
[[email protected] ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 1101600 61466 1040134 6% / tmpfs 239312 1 239311 1% /dev/shm /dev/sda1 51200 39 51161 1% /boot
3、查看磁盘I/O性能
[[email protected] ~]# iostat -x Linux 2.6.32-431.el6.x86_64 (Qinglin-A) 05/27/2016 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.01 0.00 0.09 0.08 0.00 99.82 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.26 0.05 0.32 0.05 11.38 0.79 33.02 0.00 7.72 4.53 0.17 scd0 0.00 0.00 0.00 0.00 0.04 0.00 8.00 0.00 2.70 2.70 0.00
参数说明
device:设备名称
rrqm/s:每秒进行merge的写操作数目,即delta(rmerge)/s
wrqm/s:每秒进行merge的写操作数目,即delta(wmerge)/s
r/s:每秒完成的读I/O设备的次数,即delta(rio)/s
w/s:每秒完成的写I/O设备的次数,即delta(wio)/s
rsec/s:每秒读扇区数,即delta(rsect)/s
wsec/s:每秒写扇区数,即delta(wsect)/s
rkB/s:每秒读K字节数。是rsect/s的一半,因为每扇区大小为512字节
wkB/s:每秒写K字节数。是wsect/s的一半
avgrq-sz:平均每次设备I/O操作的数据大小(即扇区),即delta(rsect + wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列的长度,即delta(aveq)/s/100(除以1000是因为aveq的单位为毫秒)
await:平均每次设备I/O操作的等待时间(单位:毫秒),即delta(ruse + wuse) /delta(rio+wio)
svtm:平均每次设备I/O操作的服务时间(单位:毫秒),即delta(use)/delta(rio+wi)
% utl:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的,即delta(use)/s/100(因为use的单位为毫秒)
如果%utl 接近100%,说明产生的I/O请求太多了,I/O系统已经满负荷,该磁盘可能存在瓶颈
如果idle小于70%,I/O的压力就比较大了,说明读取进程中有较多的wait。
四、查看Linux系统的平均负载
起因:有时候觉的系统响应很慢,但是没有迹象造成很慢的原因。这时候就需要看平均负载了。
负载会反映CPU、磁盘IO等综合性能。
[[email protected] ~]# uptime 10:53:00 up 1 day, 23 min, 1 user, load average: 0.01, 0.02, 0.03
10:53:00:代码当前时间
up 1 day, 23 min:代表系统运行了1天34分钟
user:代表运行了1个用户
load average:三个数字,以1分钟,5分钟,15分分别代码平均进程数量。
思考:
load average如何衡量当前系统负载过高呢?
1个CPU单核,这个值一定是1以下,超过1说明这条道路已经跑满。
2个CPU双核,这个值一定是4以下,双核x双核=4核,超过4,说明这条道路已经跑满。
1个CPU双核4线程,这个值一定是8以下,单核4线程+单核双线程=双核8线程,如果8,说明这条道路已经跑满了。
五、查看Linux系统的整体性能
vmstat,是用来监控linux系统的整体性能的工具
vmstat非常全面,可以观察系统的进程状态,内存使用情况,虚拟内存使用情况,I/O、中断、上下文切换、CPU的使用情况等性能信息
[[email protected]_31 ~]# vmstat 1 5 ==>1 5是显示5行,每行每秒递增1条最近状态 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 3740 198748 68680 31246068 0 0 2 8 2 1 1 1 95 4 0 0 0 3740 190560 68684 31253764 0 0 0 24 8119 847 0 0 100 0 0 0 0 3740 187040 68684 31257584 0 0 0 0 8277 784 0 0 100 0 0 0 0 3740 206140 68684 31238596 0 0 0 0 9033 868 0 0 100 0 0 0 0 3740 199336 68684 31246040 0 0 0 0 8280 834 0 0 100 0 0
Procs:
r = 等待运行的进程数
b = 处在非中断睡眠状态的进程
w = 被交换出去的可运行的进程数,此数由linux计算得出,但Linux并不耗尽交换空间。
menory:
swpd = 虚拟内存使用的情况,单位为KB。
free = 空间的内存,单位为KB。
buff = 被用来作为缓存的内存数,单位为KB。
swap:
si = 从磁盘交换到内存的交换页数量,单位为KB。
so = 从内存交换到磁盘的交换页数量,单位为KB。
io:
bi = 发送到块设备的块数,单位为块。
bo = 从内存交换到磁盘的交换页面数量,单位为KB。
system:
in = 每秒的中断数,包括时钟中断。
cs = 每秒的环境(上下文)切换次数。
cpu:
按CPU的总使用百分比来显示。
us = CPU使用时间。
sy = CPU系统使用时间。
id = 闲置时间。
标准情况下r和b值应该为:
r < 5 , b ≈ 0
r经常大于3或4,且id经常少于50,表示CPU的负载很重。
bi、bo长期不等于0,表示内存不足
disk 经常不等于0,且在b中的队列大于2或3,表示io的性能不好。
六、查看Linux系统的网络连接
1、netstat 命令的功能是显示网络连接、路由表和网络接口的信息,可以让用户得知目前都有哪些网络连接正在动作。
下面是它的重要参数,以及详细的说明文字。
-A:显示任务失联的协议控制块的地址。主要用于调试。
-a:显示所有套接字的状态。在一般情况下不显示与服务器进程相关联的套接字。
-i:显示自动配置接口的状态。那此在系统初始引导后配置的接口状态不在输出之列。
-m:打印网络存储器的使用情况。
-n:打印实际地址,而不是对地址的解释或显示主机、网络名之类的符号。
-r:打印路由选择表。
-f address:family 会地给出名字的地址簇打印统计数字 和控制块信息。到目前为止,它唯 一支持的地址簇是inet
-I interface:表示只打印给出名字的接口状态。
-p prootocol-name:表示只打印给出名字的协议的统计数字和协议控制块信息。
-s:打印每个协议的统计数字。
-t:表示在输出显示中用的时间信息代替队列长度信息。
[email protected]_lz_148:/# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:53263 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:30004 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN tcp 0 0 223.87.5.148:10050 124.251.55.199:48350 TIME_WAIT tcp 0 0 223.87.5.148:10050 124.251.55.199:52602 TIME_WAIT tcp 0 0 223.87.5.148:10050 124.251.55.199:52950 TIME_WAIT tcp 0 0 223.87.5.148:10050 124.251.55.199:51381 TIME_WAIT tcp 0 0 223.87.5.148:10050 124.251.55.199:47513 TIME_WAIT tcp 0 0 223.87.5.148:10050 124.251.55.199:47160 TIME_WAIT tcp 0 0 223.87.5.148:44973 124.251.55.201:4506 ESTABLISHED
netstat -an参数 state的含义如下所示:
LISTEN:以上是关于查看Linux系统状态的常用命令的主要内容,如果未能解决你的问题,请参考以下文章