您的位置:首页 > 运维架构 > Linux

『学了就忘』Linux系统管理 — 86、查看系统资源相关命令

2021-12-20 14:24 841 查看

[toc]

1、vmstat命令

vmstat
命令是一个监控(查看)系统资源的命令。

[root@localhost ~]# vmstat [刷新延时 刷新次数]

示例:

# 使用vmstat检测,每1秒刷新一次,共刷新3次
[root@localhost ~]# vmstat 1 3
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      0 1662400  37112  66828    0    0   319    19  172  115  2  5 90  3  0
0  0      0 1662400  37112  66848    0    0     0     0   74   43  0  0 100  0  0
0  0      0 1662400  37112  66848    0    0     0     0   50   40  0  0 100  0  0

提示:

因为我们这是Linux虚拟机,

vmstat
命令的输出项中很多数据都是0,真实环境的生产服务器并不是这样的。

输出项说明:

  • procs
    :进程信息字段。 | 输出项 | 说明 | | ------ | -------------------------------------------- | |
    r
    | 等待运行的进程数,数量越大,系统越繁忙。 | |
    b
    | 不可被唤醒的进程数量,数量越大,系统越繁忙。 |
  • memory
    :内存信息字段。 | 输出项 | 说明 | | ------- | ------------------------------------------ | |
    swpd
    | 虚拟内存的使用情况,单位KB。 | |
    free
    | 空闲的内存容量,单位KB。 | |
    buff
    | 缓冲的内存容量,单位KB。(加速数据的写入) | |
    cache
    | 缓存的内存容量,单位KB。(加速数据的读取) |
  • swap
    :交换分区的信息字段。 | 输出项 | 说明 | | ------ | ---------------------------------------- | |
    si
    | 从磁盘中交换到内存中数据的数量,单位KB。 | |
    so
    | 从内存中交换到磁盘中数据的数量,单位KB。 |

    此两个数越大,证明数据需要经常在磁盘和内存之间交换,系统性能越差。

  • io
    :磁盘读写信息段。 | 输出项 | 说明 | | ------ | ---------------------------------- | |
    bi
    | 从块设备读入数据的总量,单位是块。 | |
    bo
    | 写到块设备的数据的总量,单位是块。 |

    此两个数越大,代表系统的I/0越繁忙。

  • system
    :系统信息字段。 | 输出项 | 说明 | | ------ | -------------------------- | |
    in
    | 每秒被中断的进程次数。 | |
    cs
    | 每秒钟进行的事件切换次数。 |

    此两个数越大,代表系统与接口设备的通信非常繁忙。

  • CPU:CPU信息字段。 这里的信息和
    top
    命令中看到的信息类似。 | 输出项 | 说明 | | ------ | ----------------------------------- | |
    us
    | 非内核进程消耗CPU运算时间的百分比。 | |
    sy
    | 内核进程消耗CPU运算时间的百分比。 | |
    id
    | 空闲CPU的百分比。 | |
    wa
    | 等待I/0所消耗的CPU百分比。 | |
    st
    | 被虚拟机所盗用的CPU占比。 |

2、dmesg命令

dmesg
显示开机时内核检测信息。

在Linux系统开机的时候,Linux内核会有一些自检信息,这些信息可以通过

dmesg
命令重复的调用。

# 1.查看Linux系统开机时内核检测信息
# 信息会很多,所以我们大多数时候都要过滤有效数据。
[root@localhost ~]# dmesg

# 2.查看CPU信息
[root@localhost ~]# dmesg | grep CPU
SMP: Allowing 128 CPUs, 126 hotplug CPUs
NR_CPUS:4096 nr_cpumask_bits:128 nr_cpu_ids:128 nr_node_ids:1
PERCPU: Embedded 31 pages/cpu @ffff88000c400000 s96600 r8192 d22184 u131072
CPU: Physical Processor ID: 0
CPU: Processor Core ID: 0
mce: CPU supports 0 MCE banks
CPU0: Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz stepping 03
CPUID marked event: 'cpu cycles' unavailable
CPUID marked event: 'instructions' unavailable
CPUID marked event: 'bus cycles' unavailable
CPUID marked event: 'cache references' unavailable
CPUID marked event: 'cache misses' unavailable
CPUID marked event: 'branch instructions' unavailable
CPUID marked event: 'branch misses' unavailable
mce: CPU supports 0 MCE banks
Brought up 2 CPUs
microcode: CPU0 sig=0x306c3, pf=0x1, revision=0x25
microcode: CPU1 sig=0x306c3, pf=0x1, revision=0x25

# 3.查询第一块网卡信息
[root@localhost ~]# dmesg | grep eth0
e1000 0000:02:01.0: eth0: (PCI:66MHz:32-bit) 00:0c:29:36:1e:4e
e1000 0000:02:01.0: eth0: Intel(R) PRO/1000 Network Connection
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
eth0: no IPv6 routers present

3、free命令

free
命令查看Linux系统的内存使用状态。

[root@localhost ~]# free [-b | -k | -m | -g]

选项:
-h: 人性化显示
-b: 以字节为单位显示。
-k: 以KB为单位显示,默认就是以KB为单位显示。
-m: 以MB为单位显示。
-g: 以GB为单位显示。

示例:

[root@localhost ~]# free -h
total       used       free     shared    buffers     cached
Mem:          1.8G       240M       1.6G       236K        36M        65M
-/+ buffers/cache:       138M       1.7G
Swap:         499M         0B       499M

输出项解释:

第一行:

  • total
    是总内存数。
  • used
    是已经使用的内存数。
  • free
    是空闲的内存数。
  • shared
    是多个进程共享的内存总数。
  • buffers
    是缓冲内存数,默认单位是KB(加速数据的写入)。
  • cached
    是缓存内存数,默认单位是KB(加速数据的读取)。

第二行:

-/+ buffers/cache: 138M 1.7G
,其中138M是
- /buffers/cache
,1.78GB是
+ /buffers/cache

  • - /buffers/cache
    的内存数,相当于第一行的
    used - buffers - cached
    。 也就是说系统运行占用了240M的内容,但是
    buffers
    cached
    两个缓存占用的空间是36M和65M。 而
    buffers
    cached
    两个缓存是能被使用的,所以不应该算入系统占用内存中,所以计算机内存实际占用的数值为,内存占用总数减去两个缓存数,就是被系统实际占用的内存数。
  • + /buffers/cache
    的内存数,相当于第一行的
    free + buffers + cached
    。 和上面同理,系统实际的空闲内存空间为,空闲空间free加上两个缓存空间的数值,就是系统实际空闲空间的内存数。

第三行:

  • total
    是swap的总数。
  • used
    是已经使用的swap数。
  • free
    是空闲的swap数。
  • 以上数值默认单位是KB。

说明:

Swap(临时内存空间)在当前虚拟机中,因为访问量人数是极少的,在这种情况下,Swap都不会被占用,因为内存消耗很小。

但是在实际的生成环境中,Swap是非常重要的,可以给服务器性能的提升带来很大的帮助。

4、查看CPU信息

CPU的主要信息保存在

/proc/cpuinfo
这个文件当中,我们只要查看这个文件,就可以知道CPU的相关信息。

命令如下:

[root@localhost ~]# cat /proc/cpuinfo
# 1.逻辑CPU编号
processor	: 0
# 2.CPU制造厂商
vendor_id	: GenuineIntel
# 3.产品的系列代号
cpu family	: 6
# 4.CPU系列代号
model		: 60
# 5.CPU系列的名字,编号,主频
model name	: Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz
# 6.更新版本
stepping	: 3
microcode	: 37
# 7.实际主频
cpu MHz		: 3591.698
# 8.二级缓存
cache size	: 3072 KB
# 9.单个CPU的标号
physical id	: 0
# 10.单个CPU逻辑物理核数
siblings	: 2
# 11.当前物理核在其所处CPU中的编号,这个编号不一定连续
core id		: 0
# 12.该逻辑核所处CPU的物理核数
cpu cores	: 2

...省略...

拓展:

proc
目录中其实是有一组可以查看硬件信息的文件。

如下图所示:

如我们上边练习查看的CPU相关信息在

cpuinfo
文件中,

如果你需要查看系统中内存的信息,在

meminfo
文件中查看,

以后你想要查看相关硬件信息,都可以来

proc
目录中查看。

5、查看本机登陆用户信息

如果我们想要知道Linux服务器上目前已经登录的用户信息,可以使用

w
who
命令来进行查询。

(1)w命令

w
命令格式如下:

[root@localhost ~]# w
08:09:36 up  1:55,  3 users,  load average: 0.33, 0.19, 0.22
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                08:09    8.00s  0.06s  0.06s -bash
root     pts/0    192.168.134.1    06:16    1:17m  0.11s  0.11s -bash
root     pts/1    192.168.134.1    07:31    0.00s  0.21s  0.08s w

w
命令输出项说明:

  1. 第一行 其实和
    top
    命令的第一行非常类似,主要显示了:
    08:09:36
    :系统当前时间。
    up 1:55
    :开机多久(up)。
    3 users
    :有多少用户登陆(users)。
    load average: 0.33, 0.19, 0.22
    :1分钟、5分钟、15分钟前的平均负载(load average)。
  2. 第二行 是项目的说明:
    USER
    :登陆的用户名。
    TTY
    :登陆终端。
    FROM
    :从哪个IP地址登陆。
    LOGIN@
    :登陆时间。
    IDLE
    :用户闲置时间。
    JCPU
    :指的是和该终端连接的所有进程占用的CPU运算时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。
    PCPU
    :是指当前进程所占用的CPU运算时间。
    WHAT
    :当前正在运行的命令。
  3. 第三行开始每行代表一个用户。

(2)who命令

who
命令比
w
命令稍微简单一点,也可以用来查看系统中已经登录的用户。

who
命令格式如下:

[root@localhost ~]# who
#用户名   登录终端     登录时间(登录来源IP地址)
root     tty1         2020-07-05 08:09
root     pts/0        2020-07-05 06:16 (192.168.134.1)
root     pts/1        2020-07-05 07:31 (192.168.134.1)

6、uptime命令

uptime
命令的作用就是显示系统的启动时间和平均负载,也就是
top
命令的第一行。

其实

w
命令也能看到这一行的数据,具体原意使用哪个命令看个人习惯。

命令格式如下:

[root@localhost ~]# uptime
08:22:27 up  2:07,  3 users,  load average: 0.01, 0.03, 0.11

提示:

top
命令其实是很耗资源的,如果我只想看其中一部分信息的时候,就比如说
top
命令的第一行信息,我们就可以使用
w
命令或者
uptime
命令代替。

7、查看系统与内核相关信息

我们使用

uname
命令查看内核的相关信息,

命令格式如下:

[root@localhost ~]# uname [选项]

选项:
-a: 查看系统所有相关信息。
-r: 查看内核版本。
-s: 查看内核名称。

示例:

# 信息很全,不好辨认
[root@localhost ~]# uname -a
Linux Lyl 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

# 常用
[root@localhost ~]# uname -r
2.6.32-642.el6.x86_64

# 一般不怎么用到
[root@localhost ~]# uname -s
Linux

如果我们想要判断当前系统的位数,可以通过

file
命令来判断系统文件(主要是系统命令)的位数,来推断系统的位数。

命令如下:

# 可以看到ELF 64-bit LSB executable, x86-64 说明是64位系统。
# 上边的uname -a命令,也是能看到系统位数的(x86_64)
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

如果我们想要查询当前Linux系统的发行版本,可以使用

lsb_release -a
命令查看。

命令如下:

# 可以看到Description:  CentOS release 6.8 (Final)
[root@localhost ~]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.8 (Final)
Release:    6.8
Codename:   Final
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: