『學了就忘』Linux系統管理 — 86、檢視系統資源相關命令
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