除了本機開發以外,我們平時使用 Linux 大部分是透過 ssh 連接到遠端伺服器上的,例如係統部署、維運等工作。
在目前虛擬化非常成熟的環境下,我們所部署的系統大部分都是運行在虛擬機器中的。但是也有部分是在物理機上。那麼,怎麼區分我們的系統是運作在虛擬機器上,還是實體機器上呢?
下面我們來詳細討論下這個問題。
有幾個指令可以用來區分系統運作環境是在虛擬機器還是實體機器。
1,使用 dmidecode 指令
區分虛擬機器和實體機,最簡單的方法是使用 dmidecode 指令。如下圖所示:
sudo dmidecode -s system-manufacturer
如果是實體機,你會看到機器製造商的名稱,例如 Dell,Lenovo 等;
如果是虛擬機,你會看到一些類似 QEMU, innotek Gmbh(for VirtualBox)等的輸出資訊。
dmidecode 命令用於查看計算機的 DMI 信息,該信息以人類可讀的方式輸出。
DMI 是桌上型管理介面(Desktop Management Interface)的縮寫,幾乎是所有系統製造商都遵守的標準。 DMI 框架用於管理和追蹤桌面、筆記型電腦或伺服器電腦中的元件。
由於有了 DMI,我們可以獲得有關係統硬體、系統製造商和設備序號的信息,而使用 dmidecode(DMI Decode)命令,可以獲得這些資訊。另外,使用 -s system-manufacturer 也可取得製造商的詳細資訊。
如果系統環境是實體機,那麼可以看到製造商的訊息,例如:
$ sudo dmidecode -s system-manufacturer Dell Inc.
相反,如果是虛擬機,可以將虛擬機的資訊列印出來,如下所示:
$ dmidecode -s system-manufacturer QEMU
這個指令用起來比較便捷。關於 dmidecode 命令的詳細信息,大家也可以查看 man 手冊。
如果想要查看 Linux 版本的信息,可以使用 uname 指令。因為 dmidecode 指令查看的是硬體訊息,對於軟體資訊來說不適用。
2,使用 virt-what
區分虛擬機器和實體機器的另一個方法是使用 virt-what
基本上,可以將其理解為是一個 shell 腳本,可以作為命令安裝在大多數 Linux 發行版中。安裝指令如下:
sudo apt install virt-what
如果系統運行在一個實體機上,virt-what 指令將不會傳回任何結果;相反,如果是運行在虛擬機器上,將會輸出虛擬機的一些信息,如下所示:
$ virt-what kvm
以上是檢查 Linux 系統是運行在虛擬機器還是實體機器上的詳細內容。更多資訊請關注PHP中文網其他相關文章!