Existe-t-il un moyen de déterminer quelle version (distribution et version du noyau, je suppose) de Linux est en cours d’exécution (à partir de la ligne de commande), qui fonctionne sur n’importe quel système Linux?
Existe-t-il un moyen de déterminer quelle version (distribution et version du noyau, je suppose) de Linux est en cours d’exécution (à partir de la ligne de commande), qui fonctionne sur n’importe quel système Linux?
Réponses:
Le noyau est universellement détecté avec uname
:
$ uname -or
2.6.18-128.el5 GNU/Linux
Il n'y a pas vraiment de moyen de distribution croisée pour déterminer quelle distribution et quelle version vous êtes. Il y a eu des tentatives pour rendre cela cohérent, mais finalement cela varie, malheureusement. Les outils LSB fournissent ces informations, mais paradoxalement, ils ne sont pas installés par défaut partout. Exemple sur un système Ubuntu 9.04 avec le lsb-release
paquet installé:
$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty
Sinon, la méthode largement disponible la plus proche est la vérification des fichiers. Celles-ci existent sur la plupart des plates-formes communes et sur leurs dérivés (Red Hat et CentOS)./etc/something-release
Voici quelques exemples.
Ubuntu a /etc/lsb-release
:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"
Mais Debian a /etc/debian_version
:
$ cat /etc/debian_version
5.0.2
Fedora, Red Hat et CentOS ont:
Fedora: $ cat /etc/fedora-release
Fedora release 10 (Cambridge)
Red Hat/older CentOS: $ cat /etc/redhat-release
CentOS release 5.3 (Final)
newer CentOS: $ cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
Gentoo:
$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1
Je n'ai pas de système SUSE disponible pour le moment, mais je le crois /etc/SuSE-release
.
Slackware a /etc/slackware-release
et / ou /etc/slackware-version
.
Mandriva a /etc/mandriva-release
.
Pour la plupart des distributions populaires alors,
$ cat /etc/*{release,version}
travaillera le plus souvent. Les installations "serveur" dépouillées et nues ne disposent peut-être pas du package "release" pour la distribution.
De plus, deux programmes tiers que vous pouvez utiliser pour obtenir automatiquement ces informations sont Ohai et Facter .
Notez que de nombreuses distributions contiennent ce type d'informations /etc/issue
ou /etc/motd
, mais certaines politiques de sécurité et meilleures pratiques indiquent que ces fichiers doivent contenir des bannières de notification d'accès.
Connexe: Comment connaître la version du progiciel installé sur le nœud? , marionnette .
Vous pouvez aussi essayer:
$ cat /etc/issue
Il vous indiquera généralement (pas toujours) la distribution que vous utilisez. /etc/issue
est le fichier utilisé pour l'écran de connexion.
\S[newline]Kernel \r on an \m
Noyau: uname -a
cat /etc/os-release
au minimum pour Ubuntu, Fedora et OpenSUSE.
Ne fonctionne pas pour OS X au moins jusqu’à 10.9 (Mavericks). Utilisez sw_vers à la place.
OpenSUSE avait cat / etc / SuSE-release jusqu’à 13.1 mais est déconseillé en faveur de os-release.
Redhat 6.1 a cat / etc / redhat-release
Ce problème peut également être résolu en utilisant Python avec le platform
module :
Utilisation de la platform()
fonction:
python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6
La commande ci-dessus renvoie une chaîne unique identifiant la plate-forme sous-jacente avec autant d'informations utiles que possible.
Ou en utilisant la uname()
fonction:
python -c 'import platform; print platform.uname()'
# ('Linux', 'debian', '4.9.0-8-amd64', '#1 SMP Debian 4.9.130-2 (2018-10-27)', 'x86_64', '')
La commande ci - dessus retourne un namedtuple()
six attributs contenant: system
, node
, release
, version
, machine
, et processor
.
Ou en utilisant la dist()
fonction:
python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')
La dernière commande tente de déterminer le nom de la distribution du système d'exploitation Linux , mais il est déconseillé depuis Python 3.5 et sera supprimé de Python 3.8 .