Come faccio a sapere quale versione di Linux sto utilizzando?


209

C'è un modo per determinare quale versione (distribuzione e versione del kernel, suppongo) di Linux è in esecuzione (dalla riga di comando), che funziona su qualsiasi sistema Linux?

Risposte:


267

Il kernel è universalmente rilevato con uname:

$ uname -or
2.6.18-128.el5 GNU/Linux

Non esiste davvero un modo di distribuzione incrociata per determinare la distribuzione e la versione in uso. Ci sono stati tentativi di renderlo coerente, ma alla fine varia, sfortunatamente. Gli strumenti LSB forniscono queste informazioni, ma ironicamente non sono installati di default ovunque. Esempio su un sistema Ubuntu 9.04 con il lsb-releasepacchetto installato:

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

Altrimenti, il metodo ampiamente disponibile più vicino è il controllo dei file. Questi esistono sulla maggior parte delle piattaforme comuni e sui loro derivati ​​(ad esempio, Red Hat e CentOS)./etc/something-release

Ecco alcuni esempi.

Ubuntu ha /etc/lsb-release:

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"

Ma Debian ha /etc/debian_version:

$ cat /etc/debian_version
5.0.2

Fedora, Red Hat e CentOS hanno:

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

Non ho un sistema SUSE disponibile al momento, ma credo che lo sia /etc/SuSE-release.

Slackware ha /etc/slackware-releasee / o /etc/slackware-version.

Mandriva ha /etc/mandriva-release.

Per la maggior parte delle distribuzioni popolari quindi,

$ cat /etc/*{release,version}

funzionerà molto spesso. Le installazioni "server" spogliate e barebone potrebbero non avere il pacchetto 'release' per la distribuzione installata.

Inoltre, due programmi di terze parti che è possibile utilizzare per ottenere automaticamente queste informazioni sono Ohai e Facter .

Si noti che molte distribuzioni contengono questo tipo di informazioni in /etc/issueo /etc/motd, ma alcune politiche di sicurezza e best practice indicano che questi file devono contenere banner di notifica di accesso.

Correlati: Come scoprire la versione del pacchetto software installato sul nodo? , .


3
Lol qui stavo pensando di suggerire: cerca Informazioni!
Ivo Flipse,

2
Slackware ha / etc / slackware-version
Ken Keenan il

Grazie Ken, non ho nemmeno un sistema slackware.
jtimberman,

4
IOW: ls / etc / * {release, version} ed esamina tutto ciò che ritorna ...
freiheit

1
Molti hanno anche / etc / issue
Drew Stephens,

41

Puoi anche provare:

$ cat /etc/issue

Di solito (non sempre, però) ti dirà quale distribuzione stai usando. /etc/issueè il file utilizzato per la schermata di accesso.


2
Questo è l'unico che lo ha inchiodato per me su un server Media Temple condiviso. Grazie!!
Prova TryAgain

2
Ah, su RedHat, questo è solo\S[newline]Kernel \r on an \m
ruffin

20

kernel: uname -a


+1. Per sistemi simili, come MinGW , è necessario "-a" per ottenere le informazioni sulla versione, ad esempio "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

come minimo per Ubuntu, Fedora e OpenSUSE.

Non funziona per OS X almeno fino al 10.9 (Mavericks). Usa invece sw_vers .

OpenSUSE ha rilasciato cat / etc / SuSE fino alla 13.1 ma è deprecato a favore di os-release.

Redhat 6.1 ha cat / etc / redhat-release



14

lsb_release -a, quando disponibile, è utile.


12

cat /proc/version mi ha trovato Red Hat su un VPS condiviso.


6

kernel: uname -r

distro: lsb_release -a

Questi funzioneranno sulla maggior parte dei sistemi Linux


5

One-liner

lsb_release -a && uname -r

1
Questo potrebbe essere più appropriato come commento alla risposta di Albert Z.
fixer1234,

1
potente risposta per concludere tutte le risposte! Devo votare per lo sforzo :)
B.Kocis

1

Questo problema può anche essere risolto usando Python con il platformmodulo :

Utilizzando la platform()funzione:

python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6

Il comando sopra restituisce una singola stringa che identifica la piattaforma sottostante con quante più informazioni utili possibili.

O usando la uname()funzione:

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', '')

Il comando precedente restituisce un namedtuple()contenenti sei attributi: system, node, release, version, machine, e processor.

O usando la dist()funzione:

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

L'ultimo comando tenta di determinare il nome del nome di distribuzione del sistema operativo Linux , ma è obsoleto da Python 3.5 e verrà rimosso in Python 3.8 .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.