『學了就忘』Linux系統管理 — 86、查看系統資源相關命令
- 2021 年 12 月 20 日
- 筆記
- 測試基礎必會技能 - Linux系統
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命令輸出項說明:
- 第一行
其實和top命令的第一行非常類似,主要顯示了:
08:09:36:系統當前時間。
up 1:55:開機多久(up)。
3 users:有多少用戶登陸(users)。
load average: 0.33, 0.19, 0.22:1分鐘、5分鐘、15分鐘前的平均負載(load average)。 - 第二行
是項目的說明:
USER:登陸的用戶名。
TTY:登陸終端。
FROM:從哪個IP地址登陸。
LOGIN@:登陸時間。
IDLE:用戶閑置時間。
JCPU:指的是和該終端連接的所有進程佔用的CPU運算時間。這個時間裡並不包括過去的後台作業時間,但卻包括當前正在運行的後台作業所佔用的時間。
PCPU:是指當前進程所佔用的CPU運算時間。
WHAT:當前正在運行的命令。 - 第三行開始每行代表一個用戶。
(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

