1. 程式人生 > 其它 >『學了就忘』Linux系統管理 — 86、檢視系統資源相關命令

『學了就忘』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的內容,但是bufferscached兩個快取佔用的空間是36M和65M。
    bufferscached兩個快取是能被使用的,所以不應該算入系統佔用記憶體中,所以計算機記憶體實際佔用的數值為,記憶體佔用總數減去兩個快取數,就是被系統實際佔用的記憶體數。
  • + /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伺服器上目前已經登入的使用者資訊,可以使用wwho命令來進行查詢。

(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