查看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系统状态的常用命令的主要内容,如果未能解决你的问题,请参考以下文章

常用的Linux服务器性能查看命令

转载 linux常用的监控命令工具

linux 查看服务器性能常用命令

Linux如何查看系统和进程的运行状态?

Linux测试常用命令

linux系统:查看系统运行状态,命令w