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