GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Terminalbefehl, um herauszufinden, ob ein Server virtuell oder physisch ist?

Ich suche nach einem Terminalbefehl, der nicht erfordert, dass der ausführende Benutzer in der sudoers-Gruppe ist und auch universell ist und keine zusätzlichen Pakete installieren muss. Bisher habe ich festgestellt, dass ich Folgendes verwenden kann, wenn systemd auf dem System installiert ist:

$ 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

und unter Symbolname und Gehäuse kann ich sehen, ob es sich um eine VM oder eine physische Maschine handelt. Aber ich habe mich gefragt, ob ich lscpu verwenden kann , zumal es eine universellere Methode ist als hostnamectl und es erfordert kein systemd. Meine Theorie ist, dass, wenn die CPU nur einen Thread pro Kern hat und auch die minimale und maximale CPU-Frequenz nicht aufgeführt ist, dies ein Hinweis darauf sein sollte, dass der Server tatsächlich virtualisiert ist.

$ 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

Ich weiß, dass das, wenn eine CPU nur einen Thread pro Kern hat, nicht unbedingt bedeutet, dass es sich um eine VM handelt, aber dann sollten alle modernen CPUs 2 Threads pro Kern haben, und zusätzlich kann ich auch das Fehlen / Vorhandensein von berücksichtigen minimale und maximale CPU-Frequenz in lscpu Ausgabe.

Akzeptierte Antwort:

Unter bestimmten Bedingungen:

terminal-Befehl, der nicht erfordert, dass der ausführende Benutzer in der sudoers-Gruppe ist und auch universell ist und keine Installation zusätzlicher Pakete erfordert.

Die offensichtlich einfachste Methode für unveränderte VMs, deren Besitzer absichtlich nicht versucht haben, die Tatsache zu verbergen, dass das Betriebssystem eine VM ist, ist

cat /sys/class/dmi/id/product_name

Weitere Möglichkeiten:

  • So erkennen Sie Virtualisierung
  • 16 Methoden zur Überprüfung, ob ein Linux-System eine physische oder virtuelle Maschine ist

Außerhalb der vom OP-Autor gegebenen Bedingungen gibt es kompliziertere Ansätze wie diesen:Wo bin ich? Betriebssystem- und Virtualisierungsidentifikation ohne Systemaufrufe


Linux
  1. 4 Möglichkeiten, die öffentliche IP-Adresse des Servers im Linux-Terminal zu finden

  2. So finden Sie den geografischen Standort von Linux Server im Terminal

  3. So erhalten Sie virtuelle/physische CPU-Informationen in Oracle VM (XEN)

  4. Linux-Befehl, um festzustellen, ob die Maschine physisch oder virtuell ist

  5. Finden Sie heraus, ob das Betriebssystem in einer virtuellen Umgebung ausgeführt wird

So finden Sie die öffentliche IP-Adresse über die Befehlszeile unter Linux heraus

So finden Sie die Anzahl der CPU-Kerne über die Befehlszeile in Linux

So finden Sie CPU-Informationen in Linux über die Befehlszeile

Finden Sie die Befehlszeile?

Linux:Finden Sie heraus, auf welcher Portnummer ein Prozess lauscht

Wie finde ich die platzraubendsten Verzeichnisse oder Dateien heraus?