如何判断当前程序是否运行在虚拟机中?

=Start=

缘由:

突然想到的一个点,觉得有必要收集整理一下,方便以后使用。

正文:

参考解答:

这里只简单谈一谈应用层面的判断,太底层的我也不会、也不了解,就不说了,如果有懂的还请多指点一下。

# Windows

systeminfo | findstr /i model
wmic baseboard get manufacturer,product
Win+R => msinfo32 => 'System Manufacturer'

# Mac 

ioreg -l | grep -e 'Manufacturer'

# Linux

核心思路基本上就是通过在 dmesg输出或是/proc/cpuinfo 等文件中查找关键字来进行判断(不同版本可能不一样,所以可以借助一些工具或脚本来加速查找,比如 virt-what)。

dmidecode -t system | egrep -i 'manufacturer|product'
dmidecode -s system-product-name

sudo lshw -class system

dmesg | egrep -i 'hypervisor|vmware'

systemd-detect-virt

grep -q '^flags.*hypervisor' /proc/cpuinfo

大致内容如上,想到了再补充。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4510.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注