GNU/Linux >> Linux Esercitazione >  >> Linux

Comando terminale per scoprire se un server è virtuale o fisico?

Sto cercando un comando da terminale che non richieda all'utente in esecuzione di essere nel gruppo sudoers e anche di essere universale e non richiedere l'installazione di pacchetti aggiuntivi. Finora ho scoperto che se il sistema ha installato systemd, posso usare:

$ 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

e sotto Nome icona e Chassis posso vedere se si tratta di una macchina virtuale o di una macchina fisica. Ma mi chiedevo se posso usare lscpu , soprattutto perché è un metodo più universale di hostnamectl e non richiede systemd. La mia teoria è che se la CPU ha un solo thread per core e non elenca la frequenza minima e massima della CPU, ciò dovrebbe indicare che il server è effettivamente virtualizzato.

$ 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

So che se una CPU ha un solo thread per core non significa necessariamente che sia una VM di sicuro, ma tutte le CPU moderne dovrebbero avere 2 thread per core e inoltre posso anche tenere conto della mancanza/presenza di frequenza CPU minima e massima in lscpu uscita.

Risposta accettata:

A determinate condizioni:

comando del terminale che non richiede che l'utente in esecuzione sia nel gruppo sudoers e che sia anche universale e non richieda l'installazione di pacchetti aggiuntivi.

il metodo più semplice ovvio per le VM non modificate, che i proprietari non hanno intenzionalmente provato a nascondere il fatto che il sistema operativo è una VM, è

cat /sys/class/dmi/id/product_name

Più possibilità:

  • Come rilevare la virtualizzazione
  • 16 metodi per verificare se un sistema Linux è fisico o macchina virtuale

Al di fuori delle condizioni dell'autore fornite dall'OP, ci sono approcci più complicati come questo:dove sono? Identificazione del sistema operativo e della virtualizzazione senza chiamate di sistema


Linux
  1. 4 modi per scoprire un core della CPU che esegue un particolare processo in Linux

  2. Linux:scopri chi ha effettuato l'accesso al server

  3. Posso creare una macchina virtuale da una macchina fisica Windows XP?

  4. comando ip nel terminale Mac OS X

  5. Scopri se il sistema operativo è in esecuzione in un ambiente virtuale

Come scoprire l'indirizzo IP pubblico dalla riga di comando su Linux

Come trovare il numero di core della CPU dalla riga di comando in Linux

Come trovare informazioni sulla CPU in Linux utilizzando la riga di comando

Trova la riga di comando?

Linux:scopri su quale numero di porta è in ascolto un processo

Come scoprire le directory o i file che consumano più spazio?