用 Linux 命令顯示硬體資訊

2019-10-04 12:06:00

通過命令列獲取計算機硬體詳細資訊。

你可能會有很多的原因需要查清計算機硬體的詳細資訊。例如,你需要修復某些問題並在論壇上發出請求,人們可能會立即詢問你的計算機具體的資訊。或者當你想要升級計算機設定時,你需要知道現有的硬體型號和能夠升級的型號。這些都需要查詢你的計算機具體規格資訊。

最簡單的方法是使用標準的 Linux GUI 程式之一:

  • i-nex 收集硬體資訊,並且類似於 Windows 下流行的 CPU-Z 的顯示。
  • HardInfo 顯示硬體具體資訊,甚至包括一組八個的流行的效能基準程式,你可以用它們評估你的系統效能。
  • KInfoCenterLshw 也能夠顯示硬體的詳細資訊,並且可以從許多軟體倉庫中獲取。

或者,你也可以拆開計算機機箱去檢視硬碟、記憶體和其他裝置上的標籤資訊。或者你可以在系統啟動時,按下相應的按鍵進入 UEFI 和 BIOS 介面獲得資訊。這兩種方式都會向你顯示硬體資訊但省略軟體資訊。

你也可以使用命令列獲取硬體資訊。等一下… 這聽起來有些困難。為什麼你會要這樣做?

有時候通過使用一條針對性強的命令可以很輕鬆的找到特定資訊。也可能你沒有可用的 GUI 程式或者只是不想安裝這樣的程式。

使用命令列的主要原因可能是編寫指令碼。無論你是使用 Linux shell 還是其他程式語言來編寫指令碼通常都需要使用命令列。

很多檢測硬體資訊的命令列都需要使用 root 許可權。所以要麼切換到 root 使用者,要麼使用 sudo 在普通使用者狀態下發出命令:

sudo <the_line_command> 

並按提示輸入你的密碼。

這篇文章介紹了很多用於發現系統資訊的有用命令。文章最後的快速查詢表對它們作出了總結。

硬體概述

下面幾條命令可以全面概述計算機硬體資訊。

inxi 命令能夠列出包括 CPU、圖形、音訊、網路、驅動、分割區、感測器等詳細資訊。當論壇裡的人嘗試幫助其他人解決問題的時候,他們常常詢問此命令的輸出。這是解決問題的標準診斷程式:

inxi -Fxz

-F 引數意味著你將得到完整的輸出,x 增加細節資訊,z 引數隱藏像 MAC 和 IP 等私人身份資訊。

hwinfolshw 命令以不同的格式顯示大量相同的資訊:

hwinfo --short

lshw -short

這兩條命令的長格式輸出非常詳細,但也有點難以閱讀:

hwinfo

lshw

CPU 詳細資訊

通過命令你可以了解關於你的 CPU 的任何資訊。使用 lscpu 命令或與它相近的 lshw 命令檢視 CPU 的詳細資訊:

lscpu

lshw -C cpu

在這兩個例子中,輸出的最後幾行都列出了所有 CPU 的功能。你可以檢視你的處理器是否支援特定的功能。

使用這些命令的時候,你可以通過使用 grep 命令過濾複雜的資訊,並縮小所需資訊範圍。例如,只檢視 CPU 品牌和型號:

lshw -C cpu | grep -i product

僅檢視 CPU 的速度(兆赫茲):

lscpu | grep -i mhz

或其 BogoMips 額定功率:

lscpu | grep -i bogo

grep 命令的 -i 引數代表搜尋結果忽略大小寫。

記憶體

Linux 命令列使你能夠收集關於你的計算機記憶體的所有可能的詳細資訊。你甚至可以不拆開計算機機箱就能確定是否可以為計算機新增額外的記憶體條。

使用 dmidecode 命令列出每根記憶體條和其容量:

dmidecode -t memory | grep -i size

使用以下命令獲取系統記憶體更多的資訊,包括型別、容量、速度和電壓:

lshw -short -C memory

你肯定想知道的一件事是你的計算機可以安裝的最大記憶體:

dmidecode -t memory | grep -i max

現在檢查一下計算機是否有空閒的插槽可以插入額外的記憶體條。你可以通過使用命令在不開啟計算機機箱的情況下就做到:

lshw -short -C memory | grep -i empty

輸出為空則意味著所有的插槽都在使用中。

確定你的計算機擁有多少顯示卡記憶體需要下面的命令。首先使用 lspci 列出所有裝置資訊然後過濾出你想要的顯示卡裝置資訊:

lspci | grep -i vga

視訊控制器的裝置號輸出資訊通常如下:

00:02.0 VGA compatible controller: Intel Corporation 82Q35 Express Integrated Graphics Controller (rev 02)

現在再加上視訊裝置號重新執行 lspci 命令:

lspci -v -s 00:02.0

輸出資訊中 prefetchable 那一行顯示了系統中的顯示卡記憶體大小:

...Memory at f0100000 (32-bit, non-prefetchable) [size=512K]I/O ports at 1230 [size=8]Memory at e0000000 (32-bit, prefetchable) [size=256M]Memory at f0000000 (32-bit, non-prefetchable) [size=1M]...

最後使用下面的命令展示當前記憶體使用量(兆位元組):

free -m

這條命令告訴你多少記憶體是空閒的,多少命令正在使用中以及交換記憶體的大小和是否正在使用。例如,輸出資訊如下:

              total        used        free     shared    buff/cache   availableMem:          11891        1326        8877      212        1687       10077Swap:          1999           0        1999

top 命令為你提供記憶體使用更加詳細的資訊。它顯示了當前全部記憶體和 CPU 使用情況並按照進程 ID、使用者 ID 及正在執行的命令細分。同時這條命令也是全螢幕輸出:

top

磁碟檔案系統和裝置

你可以輕鬆確定有關磁碟、分割區、檔案系統和其他裝置資訊。

顯示每個磁碟裝置的描述資訊:

lshw -short -C disk

通過以下命令獲取任何指定的 SATA 磁碟詳細資訊,例如其型號、序列號以及支援的模式和磁區數量等:

hdparm -i /dev/sda

當然,如果需要的話你應該將 sda 替換成 sdb 或者其他裝置號。

要列出所有磁碟及其分割區和大小,請使用以下命令:

lsblk

使用以下命令獲取更多有關磁區數量、大小、檔案系統 ID 和 型別以及分割區開始和結束磁區:

fdisk -l

要啟動 Linux,你需要確定 GRUB 載入程式的可掛載分割區。你可以使用 blkid 命令找到此資訊。它列出了每個分割區的唯一識別符號(UUID)及其檔案系統型別(例如 ext3 或 ext4):

blkid

使用以下命令列出已掛載的檔案系統和它們的掛載點,以及已用的空間和可用的空間(兆位元組為單位):

df -m

最後,你可以列出所有的 USB 和 PCI 匯流排以及其他裝置的詳細資訊:

lsusb

lspci

網路

Linux 提供大量的網路相關命令,下面只是幾個例子。

檢視你的網絡卡硬體詳細資訊:

lshw -C network

ifconfig 是顯示網路介面的傳統命令:

ifconfig -a

但是現在很多人們使用:

ip link show

netstat -i

在閱讀輸出時,了解常見的網路縮寫十分有用:

縮寫含義
lo回環介面
eth0 或 enp*乙太網介面
wlan0無線網介面
ppp0對等協定介面(由撥號數據機、PPTP VPN 連線或者 USB 數據機使用)
vboxnet0 或 vmnet*虛擬機器網路介面

表中的星號是萬用字元,代表不同系統的任意字元。

使用以下命令顯示預設閘道器和路由表:

ip route | column -t

netstat -r

軟體

讓我們以顯示最底層軟體詳細資訊的兩條命令來結束。例如,如果你想知道是否安裝了最新的韌體該怎麼辦?這條命令顯示了 UEFI 或 BIOS 的日期和版本:

dmidecode -t bios

核心版本是多少,以及它是 64 位的嗎?網路主機名是什麼?使用下面的命令查出結果:

uname -a

快速查詢表

用途命令
顯示所有硬體資訊inxi -Fxzhwinfo --short 或 lshw  -short
CPU 資訊lscpulshw -C cpu
顯示 CPU 功能(例如 PAE、SSE2)lshw -C cpu | grep -i capabilities
報告 CPU 位數lshw -C cpu | grep -i width
顯示當前記憶體大小和設定dmidecode -t memory | grep -i size 或 lshw -short -C memory
顯示硬體支援的最大記憶體dmidecode -t memory | grep -i max
確定是否有空閒記憶體插槽lshw -short -C memory | grep -i empty(輸出為空表示沒有可用插槽)
確定顯示卡記憶體數量lspci | grep -i vga 然後指定裝置號再次使用;例如:lspci -v -s 00:02.0 顯示卡記憶體數量就是 prefetchable 的值
顯示當前記憶體使用情況free -mtop
列出磁碟驅動器lshw -short -C disk
顯示指定磁碟驅動器的詳細資訊hdparm -i /dev/sda(需要的話替換掉 sda
列出磁碟和分割區資訊lsblk(簡單) 或 fdisk -l(詳細)
列出分割區 ID(UUID)blkid
列出已掛載檔案系統掛載點以及已用和可用空間df -m
列出 USB 裝置lsusb
列出 PCI 裝置lspci
顯示網絡卡詳細資訊lshw -C network
顯示網路介面ifconfig -a 或 ip link shownetstat -i
顯示路由表ip route | column -tnetstat -r
顯示 UEFI/BIOS 資訊dmidecode -t bios
顯示核心版本網路主機名等uname -a

你有喜歡的命令被我忽略掉的嗎?請新增評論分享給大家。