GNU/Linux >> Znalost Linux >  >> Linux

Příkaz terminálu pro zjištění, zda je server virtuální nebo fyzický?

Hledám terminálový příkaz, který nevyžaduje, aby provádějící uživatel byl ve skupině sudoers a také aby byl univerzální a nevyžadoval instalaci dalších balíčků. Zatím jsem zjistil, že pokud má systém nainstalován systemd, mohu použít:

$ 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

a pod názvem ikony a podvozku vidím, zda je to VM nebo fyzický stroj. Ale zajímalo by mě, jestli mohu použít lscpu , zejména proto, že je to univerzálnější metoda než hostnamectl a nevyžaduje systemd. Moje teorie je, že pokud má CPU pouze jedno vlákno na jádro a také není uvedena minimální a maximální frekvence CPU, mělo by to znamenat, že server je skutečně virtualizovaný.

$ 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

Vím, že pokud má CPU pouze jedno vlákno na jádro, nemusí to nutně znamenat, že je to VM, ale pak by všechny moderní CPU měly mít 2 vlákna na jádro a navíc mohu vzít v úvahu také nedostatek/přítomnost minimální a maximální frekvence CPU v lscpu výstup.

Přijatá odpověď:

Za daných podmínek:

terminálový příkaz, který nevyžaduje, aby spouštějící uživatel byl ve skupině sudoers a také aby byl univerzální a nevyžadoval instalaci dalších balíčků.

zřejmá nejjednodušší metoda pro neupravené virtuální počítače, u kterých se vlastníci záměrně nepokoušeli skrýt skutečnost, že operační systém je virtuální počítač, je

cat /sys/class/dmi/id/product_name

Další možnosti:

  • Jak zjistit virtualizaci
  • 16 metod, jak zkontrolovat, zda je systém Linux fyzický nebo virtuální stroj

Mimo podmínky dané autorem OP existují složitější přístupy, jako je tento:Kde to jsem? Identifikace operačního systému a virtualizace bez systémových volání


Linux
  1. Jak najít geografickou polohu serveru Linux v terminálu

  2. Jak zjistit, co dělá příkaz Linuxu

  3. Jak získat informace o virtuálním/fyzickém CPU v Oracle VM (XEN)

  1. Linuxový příkaz, který určí, zda je stroj fyzický nebo virtuální

  2. Jak zjistit, který ovladač Wi-Fi je nainstalován?

  3. Jak zjistit verzi Bluez z příkazového řádku?

  1. 4 způsoby, jak najít veřejnou IP adresu serveru v terminálu Linux

  2. Linux:Zjistěte, kdo je přihlášen k serveru

  3. Počítání počtu souborů v adresáři pomocí příkazu terminálu OSX