GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Terminal Pour Savoir Si Un Serveur Est Virtuel Ou Physique?

Je recherche une commande de terminal qui ne nécessite pas que l'utilisateur exécutant soit dans le groupe sudoers et qui soit également universelle et ne nécessite pas l'installation de packages supplémentaires. Jusqu'à présent, j'ai trouvé que si le système a installé systemd, je peux utiliser :

$ 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

et sous le nom de l'icône et le châssis, je peux voir s'il s'agit d'une machine virtuelle ou d'une machine physique. Mais je me demandais si je pouvais utiliser lscpu , d'autant plus qu'il s'agit d'une méthode plus universelle que hostnamectl et il ne nécessite pas systemd. Ma théorie est que si le processeur n'a qu'un seul thread par cœur et que la fréquence minimale et maximale du processeur n'est pas répertoriée, cela devrait indiquer que le serveur est effectivement virtualisé.

$ 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

Je sais que si un processeur n'a qu'un seul thread par cœur ne signifie pas nécessairement qu'il s'agit d'une VM, mais alors tous les processeurs modernes devraient avoir 2 threads par cœur et en plus je peux également prendre en compte le manque/présence de fréquence CPU minimale et maximale dans le lscpu sortie.

Réponse acceptée :

Sous certaines conditions :

commande de terminal qui ne nécessite pas que l'utilisateur exécutant appartienne au groupe sudoers et soit également universelle et ne nécessite pas l'installation de packages supplémentaires.

la méthode la plus simple évidente pour les machines virtuelles non modifiées, que les propriétaires n'ont intentionnellement pas essayé de cacher le fait que le système d'exploitation est une machine virtuelle, est

cat /sys/class/dmi/id/product_name

Plus de possibilités :

  • Comment détecter la virtualisation
  • 16 méthodes pour vérifier si un système Linux est une machine physique ou virtuelle

En dehors des conditions données par l'auteur de l'OP, il existe des approches plus compliquées comme celle-ci :Où suis-je ? Identification du système d'exploitation et de la virtualisation sans appels système


Linux
  1. 4 façons de trouver l'adresse IP publique du serveur dans le terminal Linux

  2. Comment trouver l'emplacement géographique du serveur Linux dans le terminal

  3. 4 façons de trouver un cœur de processeur qui exécute un processus particulier sous Linux

  4. Linux :Découvrez qui est connecté au serveur

  5. Commande Linux pour savoir si la machine est physique ou virtuelle

Comment trouver une adresse IP publique à partir de la ligne de commande sous Linux

Comment trouver le nombre de cœurs de processeur à partir de la ligne de commande sous Linux

Comment trouver des informations sur le processeur sous Linux à l'aide de la ligne de commande

Trouver la ligne de commande ?

Linux :Découvrez sur quel numéro de port un processus écoute

Comment trouver les répertoires ou fichiers les plus gourmands en espace ?