web-dev-qa-db-fra.com

Comment savoir quelle version de Linux est en cours d'exécution?

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?

204
Daryl Spitzer

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 paquet lsb-release installé:

$ lsb_release -irc
Distributor ID: Ubuntu
Release:        9.04
Codename:       jaunty

Sinon, la méthode largement disponible la plus proche consiste à vérifier les fichiers /etc/something-release. Ceux-ci existent sur la plupart des plates-formes communes et sur leurs dérivés (c'est-à-dire Red Hat et CentOS).

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 crois qu'il s'agit de /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.

En outre, deux programmes tiers que vous pouvez utiliser pour obtenir automatiquement ces informations sont Ohai et Facter .

Notez que de nombreuses distributions ont ce type d'informations dans /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.

Connexes: Comment connaître la version du logiciel installé sur le nœud? , marionnette .

264
jtimberman

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.

39
Pablo Santa Cruz

Noyau: uname -a

20
raspi
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

15
sweetfa

lsb_release -a, lorsqu'il est disponible, est utile.

14
CesarB

cat /proc/version m'a trouvé Red Hat sur un serveur virtuel partagé.

12
iono

Noyau: uname -r

Distro: lsb_release -a

Ceux-ci fonctionneront sur la plupart des systèmes Linux

6
Albert Z.

Bon mot

lsb_release -a && uname -r
5
Serge Stroobandt

Ce problème peut également être résolu en utilisantPython avec le module platform:

Utilisation de la fonction platform():

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 fonction uname():

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 renvoie une namedtuple() contenant six attributs: system, node, release, version, machine et processor.

Ou en utilisant la fonction dist():

python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')

La dernière commande tente de déterminer le nom du nom de la distribution du système d'exploitation Linux, mais il s'agit deobsolète depuis Python 3.5} _ et sera supprimé) en Python 3.8 .

1
simhumileco