我正在寻找一个终端命令,该命令不要求执行用户位于sudoers组中并且也具有通用性,并且不需要安装其他软件包。到目前为止,我发现如果系统已安装systemd,则可以使用:
$ hostnamectl status
Static hostname: mint
Icon name: computer-laptop
Chassis: laptop
Machine ID: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Boot ID: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Operating System: Linux Mint LMDE
Kernel: Linux 3.16.0-6-amd64
在“图标名称和机箱”下,我可以看到它是VM还是物理机。但是我想知道是否可以使用lscpu
,尤其是因为它是比通用的方法,hostnamectl
并且不需要systemd。我的理论是,如果CPU每个核心只有一个线程,并且没有列出最小和最大CPU频率,则这应该表明服务器确实已虚拟化。
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Model name: Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz
Stepping: 3
CPU MHz: 2500.488
CPU max MHz: 3500.0000
CPU min MHz: 800.0000
BogoMIPS: 4988.18
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0-7
我知道如果一个CPU每个核心只有一个线程并不一定意味着它肯定是VM,但是所有现代CPU都应该每个核心具有2个线程,此外,我还可以考虑是否存在lscpu
输出中的最小和最大CPU频率。
4
“所有现代CPU的每个内核都应有2个线程” -您从何处得到这个想法?英特尔今年发布了20种 不具备此功能的处理器。那只是英特尔。
—
marcelm
@marcelm,我不知道。
—
乔治·斯托雅诺夫'18
在某些情况下,为了获得最佳性能,需要在BIOS中关闭超线程。
—
doneal24 '18