it-swarm-eu.dev

Come posso scoprire quale versione di Linux sto usando?

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?

204
Daryl Spitzer

Il kernel è riconosciuto universalmente con uname:

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

Non c'è davvero un modo di distribuzione incrociata per determinare la distribuzione e la versione in cui ti trovi. Ci sono stati tentativi di renderlo coerente, ma alla fine varia, sfortunatamente. Gli strumenti LSB forniscono queste informazioni, ma ironicamente non vengono installate di default ovunque. Esempio su un sistema Ubuntu 9.04 con il pacchetto lsb-release installato:

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

In caso contrario, il metodo più ampiamente disponibile è il controllo dei file /etc/something-release. Esistono sulla maggior parte delle piattaforme comuni e sui loro derivati ​​(ad es. Red Hat e CentOS).

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

Al momento non ho un sistema SUSE disponibile, 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,

$ cat /etc/*{release,version}

molto spesso funzionerà. Le installazioni "server" storte 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 .

Nota 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.

Correlati: Come trovare la versione del pacchetto software installata sul nodo? , fantoccio .

264
jtimberman

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.

39
Pablo Santa Cruz

Kernel: uname -a

20
raspi
cat /etc/os-release

come minimo per Ubuntu, Fedora e OpenSUSE.

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

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

Redhat 6.1 ha cat/etc/redhat-release

15
sweetfa

lsb_release -a, quando disponibile, è utile.

14
CesarB

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

12
iono

Kernel: uname -r

Distro: lsb_release -a

Questi verranno eseguiti sulla maggior parte dei sistemi Linux

6
Albert Z.

One-liner

lsb_release -a && uname -r
5
Serge Stroobandt

Questo problema può anche essere risolto usingPython con il modulo platform:

Utilizzando la funzione platform():

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

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

O usando 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 precedente restituisce una namedtuple() contenente sei attributi: system, node, release, version, machine e processor.

O usando la funzione dist():

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

L'ultimo comando cerca di determinare il nome del nome di distribuzione del sistema operativo Linux, ma èdeprecato poiché Python 3.5e sarà rimosso in Python 3.8 .

1
simhumileco