Parfois, il est nécessaire de déterminer rapidement des détails tels que le nom du noyau, la version, le nom d'hôte, etc. de la machine Linux que vous utilisez.
Même si vous pouvez trouver tous ces détails dans les fichiers respectifs présents sous le système de fichiers proc, il est plus facile d'utiliser l'utilitaire uname pour obtenir ces informations rapidement.
La syntaxe de base de la commande uname est :
uname [OPTION]...
Voyons maintenant quelques exemples qui illustrent l'utilisation de la commande "uname".
uname sans aucune option
Lorsque la commande 'uname' est exécutée sans aucune option, elle imprime uniquement le nom du noyau. Ainsi, la sortie ci-dessous montre que c'est le noyau "Linux" qui est utilisé par ce système.
$ uname Linux
Vous pouvez également utiliser uname -s, qui affiche également le nom du noyau.
$ uname -s Linux
Obtenez le nom d'hôte du nœud de réseau à l'aide de l'option -n
Utilisez l'option uname -n pour récupérer le nom d'hôte du nœud réseau de votre machine Linux.
$ uname -n dev-server
La sortie ci-dessus sera la même que la sortie de la commande hostname.
Obtenir la version du noyau à l'aide de l'option -r
La commande uname peut également être utilisée pour récupérer les informations de version du noyau. L'option -r peut être utilisée à cette fin.
$ uname -r 2.6.32-100.28.5.el6.x86_64
Obtenir la version du noyau à l'aide de l'option -v
La commande uname peut également être utilisée pour récupérer les informations de version du noyau. L'option -v peut être utilisée à cette fin.
$ uname -v #1 SMP Wed Feb 2 18:40:23 EST 2011
Obtenez le nom du matériel de la machine à l'aide de l'option -m
La commande uname peut également être utilisée pour récupérer le nom du matériel de la machine. L'option -m peut être utilisée à cette fin. Cela indique qu'il s'agit d'un système 64 bits.
$ uname -m x86_64
Obtenir le type de processeur à l'aide de l'option -p
La commande uname peut également être utilisée pour récupérer les informations sur le type de processeur. L'option -p peut être utilisée à cette fin. Si la commande uname n'est pas en mesure de récupérer les informations sur le type de processeur, elle produit "inconnu" dans la sortie.
$ uname -p x86_64
Parfois, vous pouvez voir "inconnu" comme sortie de cette commande, si uname n'a pas pu récupérer les informations sur le type de processeur.
Obtenir la plate-forme matérielle à l'aide de l'option -i
La commande uname peut également être utilisée pour récupérer les informations sur la plate-forme matérielle. L'option -i peut être utilisée à cette fin. Si la commande uname n'est pas en mesure de récupérer les informations de la plate-forme matérielle, elle produit "inconnu" dans la sortie.
$ uname -i x86_64
Parfois, vous pouvez voir "inconnu" comme résultat de cette commande, si uname n'a pas pu récupérer les informations sur la plate-forme.
Obtenez le nom du système d'exploitation à l'aide de l'option -o
La commande uname peut également être utilisée pour récupérer le nom du système d'exploitation. L'option -o peut être utilisée à cette fin.
Par exemple :
$ uname -o GNU/Linux
Obtenez toutes les informations en utilisant l'option uname -a
Toutes les informations auxquelles nous avons de loin appris à accéder en utilisant différents drapeaux peuvent être récupérées en une seule fois. L'option -a peut être utilisée à cette fin.
$ uname -a Linux dev-server 2.6.32-100.28.5.el6.x86_64 #1 SMP Wed Feb 2 18:40:23 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
Valeur inconnue dans la sortie uname
En écrivant cet article, j'étais un peu curieux de savoir pourquoi l'utilitaire uname renvoie "inconnu" pour le type de processeur (-p) et la plate-forme matérielle (-i) sur mon ordinateur portable qui exécute Ubuntu. J'ai fait quelques recherches sur ce problème.
Une explication que j'ai trouvée était que la commande uname utilise la fonction uname() (man 2 uname) qui lit toutes les informations de la structure de noyau suivante :
struct utsname { char sysname[]; /* Operating system name (e.g., "Linux") */ char nodename[]; /* Name within "some implementation-defined network" */ char release[]; /* OS release (e.g., "2.6.28") */ char version[]; /* OS version */ char machine[]; /* Hardware identifier */ #ifdef _GNU_SOURCE char domainname[]; /* NIS or YP domain name */ #endif };
Étant donné que les informations sur le type de processeur et la plate-forme matérielle ne sont pas présentes dans cette structure, la commande uname renvoie « inconnu » pour eux.
L'autre explication que j'ai trouvée est qu'à l'intérieur de uname.c, la gestion de l'option -p est la suivante :
... ... ... char const *element = unknown; #if HAVE_SYSINFO && defined SI_ARCHITECTURE { static char processor[257]; if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor)) element = processor; } #endif ... ... ...
Les macros HAVE_SYSINFO et SI_ARCHITECTURE ne sont définies nulle part dans le noyau et donc unknown est renvoyé. Il pourrait en être de même pour l'option -i.
Je ne suis pas sûr du problème exact, mais nous pouvons supposer en toute sécurité que les options -p et -i ne sont pas standard et ne sont que des extensions et doivent donc être évitées lors de l'utilisation de la commande uname dans un script.