Je recherche une commande de terminal qui ne nécessite pas que l'utilisateur exécutant soit dans le groupe sudoers et soit universel et ne nécessite pas d'installer 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 physique. Mais je me demandais si je pouvais l'utiliser lscpu
, d'autant plus que c'est une méthode plus universelle que hostnamectl
et qu'elle ne nécessite pas systemd. Ma théorie est que si le processeur n'a qu'un seul thread par cœur et qu'il n'est pas non plus répertorié la fréquence minimale et maximale du processeur, cela devrait être une indication 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 de VM à coup sûr, mais tous les processeurs modernes devraient avoir 2 threads par cœur et en plus, je peux également prendre en compte le manque / la présence de fréquence CPU minimale et maximale dans la lscpu
sortie.