Ich suche nach einem Terminalbefehl, bei dem der ausführende Benutzer nicht zur sudoers-Gruppe gehören und universell sein muss und keine zusätzlichen Pakete installieren muss. Bisher habe ich festgestellt, dass ich Folgendes verwenden kann, wenn auf dem System systemd 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 es verwenden kann lscpu
, zumal es eine universellere Methode ist als hostnamectl
und es kein systemd erfordert. Meine Theorie ist, dass wenn die CPU nur einen Thread pro Kern hat und auch nicht die minimale und maximale CPU-Frequenz 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 im lscpu
Ausgang.