2009-07-22 19:20:02 +0000 2009-07-22 19:20:02 +0000
211
211

Come faccio a sapere quale versione di Linux sto eseguendo?

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

Risposte (9)

269
269
269
2009-07-22 19:34:33 +0000

Il kernel viene rilevato universalmente con uname:

$ uname -or
2.6.18-128.el5 GNU/Linux
``` ```
$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty

Non c'è davvero un modo di distribuzione incrociata per determinare su quale distribuzione e versione ci si trova. Ci sono stati tentativi di renderla coerente, ma alla fine varia, purtroppo. Gli strumenti LSB forniscono queste informazioni, ma per ironia della sorte non sono installati di default ovunque. Esempio su un sistema Ubuntu 9.04 con il pacchetto lsb-release installato:

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

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

Ecco alcuni esempi.

Ubuntu ha /etc/lsb-release:

$ cat /etc/debian_version
5.0.2
``` ```
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)

Ma Debian ha /etc/debian_version:

$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1
``` ```
$ cat /etc/*{release,version}

Fedora, Red Hat e CentOS hanno:

&001 &001

Gentoo:

&001 &001

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

Slackware ha /etc/slackware-release e/o /etc/slackware-version.

Mandriva ha /etc/mandriva-release.

Per la maggior parte delle distribuzioni popolari, quindi,

&001 &001

funzionerà più spesso. Le installazioni “server” spogliate e senza ossa potrebbero non avere installato il pacchetto “release” per la distribuzione.

Inoltre, due programmi di terze parti che puoi usare per ottenere automaticamente queste informazioni sono Ohai e Facter .

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

Relativi Come scoprire la versione del pacchetto software installato sul nodo? puppet .

42
42
42
2009-07-22 19:58:38 +0000

Si potrebbe anche provare:

$ cat /etc/issue
``` &001 


Di solito (non sempre, però) vi dirà quale distribuzione state usando. `/etc/issue` è il file utilizzato per la schermata di login.
20
20
20
2009-07-22 19:21:27 +0000

Kernel: uname -a

16
16
16
2014-04-02 22:56:41 +0000
cat /etc/os-release

come minimo per Ubuntu, Fedora e OpenSUSE.

Non funziona per OS X almeno fino a 10,9 (Mavericks). Utilizzare sw_vers invece.

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

Redhat 6.1 ha cat /etc/redhat-release

14
14
14
2009-07-22 23:48:08 +0000

lsb_release -a, quando disponibile, è utile.

12
12
12
2014-06-26 06:59:45 +0000

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

6
6
6
2015-06-18 17:06:13 +0000

Kernel: uname -r

Distro: lsb_release -a

Questi funzioneranno sulla maggior parte dei sistemi Linux

5
5
5
2018-01-29 14:51:31 +0000

One-liner

lsb_release -a && uname -r
1
1
1
2019-01-08 07:25:25 +0000

Questo problema può anche essere risolto usando * Python con il modulo platform **:

Usando la funzione platform():

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

Il comando di cui sopra _restituisce una singola stringa che identifica la piattaforma sottostante con quante più informazioni utili possibile. _

O utilizzando la funzione 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', '')

Il comando di cui sopra _restituisce un namedtuple() contenente sei attributi: system, node, release, version, machine, processor, dist(), &007, e &007. _

O utilizzando la funzione &007:

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


L'ultimo comando _prova a determinare il nome del nome della distribuzione del sistema operativo Linux_, ma è **_depreciso da Python 3.5_** e _sarà **rimosso in Python 3.8** _.