In addition to local development, we usually use Linux to connect to remote servers through ssh, such as system deployment, operation and maintenance, etc.
In the current environment where virtualization is very mature, most of the systems we deploy run in virtual machines. But some of them are on physical machines. So, how to distinguish whether our system is running on a virtual machine or a physical machine?
Let’s discuss this issue in detail below.
There are several commands that can be used to distinguish whether the system running environment is a virtual machine or a physical machine.
1, use the dmidecode command
The easiest way to distinguish between virtual machines and physical machines is to use the dmidecode command. As follows:
sudo dmidecode -s system-manufacturer
If it is a physical machine, you will see the name of the machine manufacturer, such as Dell, Lenovo, etc.;
If it is a virtual machine, you will see some output information similar to QEMU, innotek Gmbh (for VirtualBox), etc.
The dmidecode command is used to view the computer's DMI information, which is output in a human-readable format.
DMI is the abbreviation of Desktop Management Interface (Desktop Management Interface) and is a standard adhered to by almost all system manufacturers. The DMI framework is used to manage and track components in a desktop, laptop, or server computer.
Thanks to DMI, we can obtain information about the system hardware, system manufacturer, and device serial number, and using the dmidecode (DMI Decode) command, we can obtain this information. Alternatively, use -s system-manufacturer to obtain manufacturer details.
If the system environment is a physical machine, you can see the manufacturer's information, such as:
$ sudo dmidecode -s system-manufacturer Dell Inc.
On the contrary, if it is a virtual machine, you can print out the virtual machine information, as shown below:
$ dmidecode -s system-manufacturer QEMU
This command is more convenient to use. For detailed information about the dmidecode command, you can also view the man manual.
If you want to view Linux version information, you can use the uname command. Because the dmidecode command views hardware information, it is not applicable to software information.
2, use virt-what
Another way to distinguish between virtual machines and physical machines is to use virt-what
Basically, it can be understood as a shell script that can be installed as a command in most Linux distributions. The installation command is as follows:
sudo apt install virt-what
If the system is running on a physical machine, the virt-what command will not return any results; on the contrary, if it is running on a virtual machine, some information about the virtual machine will be output, as shown below:
$ virt-what kvm
The above is the detailed content of Check whether the Linux system is running on a virtual machine or a physical machine. For more information, please follow other related articles on the PHP Chinese website!