Comment savoir quelle version de Linux j'utilise?

209

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?

Daryl Spitzer
la source

Réponses:

267

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-releasepaquet 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-releaseet / 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/issueou /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? , .

jtimberman
la source
3
Lol ici, je pensais à suggérer: chercher à propos de!
Ivo Flipse
2
Slackware a / etc / slackware-version
Ken Keenan le
Merci Ken, je n'ai pas non plus de système slackware.
jtimberman
4
IOW: ls / etc / * {version, version} et examiner tout ce qui revient ...
freiheit
1
La plupart ont aussi / etc / issue
Drew Stephens
41

Vous pouvez aussi essayer:

$ cat /etc/issue

Il vous indiquera généralement (pas toujours) la distribution que vous utilisez. /etc/issueest le fichier utilisé pour l'écran de connexion.

Pablo Santa Cruz
la source
2
C'est le seul qui me l'a cloué sur un serveur partagé Media Temple. Merci!!
TryTryAgain
2
Ha, sur RedHat, c'est juste\S[newline]Kernel \r on an \m
ruffin
20

Noyau: uname -a

Raspi
la source
+1 Pour des systèmes similaires, tels que MinGW , "-a" est nécessaire pour obtenir les informations de version, par exemple "MINGW32_NT-5.1 LAP065 1.0.17 (0.48 / 3/2). 2011-04-24 23:39 i686 Msys".
Peter Mortensen
15
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

sweetfa
la source
14

lsb_release -a, lorsque disponible, est utile.

CesarB
la source
12

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

iono
la source
6

Noyau: uname -r

Distro: lsb_release -a

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

Albert Z.
la source
5

Bon mot

lsb_release -a && uname -r
Serge Stroobandt
la source
1
Cela pourrait être plus approprié en tant que commentaire sur la réponse d'Albert Z.
fix1234
1
puissante réponse pour conclure toutes les réponses! Je dois voter pour l'effort :)
B.Kocis
1

Ce problème peut également être résolu en utilisant Python avec le platformmodule :

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 .

Simhumileco
la source