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

¿Cómo averiguo qué versión de Linux estoy ejecutando?

¿Hay alguna manera de determinar qué versión (distribución y versión del núcleo, supongo) de Linux se está ejecutando (desde la línea de comandos), que funcione en cualquier sistema Linux?

Respuestas (9)

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

El núcleo se detecta universalmente con uname:

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

Realmente no hay una forma de distribución cruzada para determinar en qué distribución y versión estás. Ha habido intentos de hacer esto consistente, pero al final varía, desafortunadamente. Las herramientas LSB proporcionan esta información, pero irónicamente no están instaladas por defecto en todas partes. Ejemplo en un sistema Ubuntu 9.04 con el paquete lsb-release instalado:

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

Por lo demás, el método más cercano y ampliamente disponible es comprobar los archivos /etc/something-release. Estos existen en la mayoría de las plataformas comunes, y en sus derivados (es decir, Red Hat y CentOS).

Aquí hay algunos ejemplos.

Ubuntu tiene /etc/lsb-release:

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

Pero Debian tiene /etc/debian_version:

$ cat /etc/debian_version
5.0.2

Fedora, Red Hat y CentOS tienen:

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

No tengo un sistema SUSE disponible por el momento, pero creo que es /etc/SuSE-release.

Slackware tiene /etc/slackware-release y/o /etc/slackware-version.

Mandriva tiene /etc/mandriva-release.

Para la mayoría de las distribuciones populares entonces,

$ cat /etc/*{release,version}

funcionará más a menudo. Las instalaciones de “servidor” de stripped down y barebones pueden no tener instalado el paquete ‘release’ de la distribución.

Adicionalmente, dos programas de terceros que puede usar para obtener automáticamente esta información son Ohai y Facter .

Tenga en cuenta que muchas distribuciones tienen este tipo de información en /etc/issue o /etc/motd, pero algunas políticas de seguridad y mejores prácticas indican que estos archivos deben contener banners de notificación de acceso.

Relacionado Cómo encontrar la versión del paquete de software instalado en el nodo? Títere .

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

También podrías intentar:

$ cat /etc/issue

Normalmente (aunque no siempre) te dirá qué distribución estás usando. /etc/issue es el archivo usado para la pantalla de acceso.

20
20
20
2009-07-22 19:21:27 +0000

Núcleo: uname -a

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

como mínimo para Ubuntu, Fedora y OpenSUSE.

No funciona para OS X por lo menos hasta 10.9 (Mavericks). Usa sw_vers en su lugar.

OpenSUSE tenía cat /etc/SuSE-release hasta el 13.1 pero está desaprobado a favor de os-release.

Redhat 6.1 tiene cat /etc/redhat-release

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

lsb_release -a, cuando esté disponible, es útil.

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

cat /proc/version me encontró Red Hat en un VPS compartido.

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

Kernel: uname -r

Distro: lsb_release -a

Estos funcionarán en la mayoría de los sistemas 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

Este problema también puede ser resuelto usando * Python con el módulo platform **:

Usando la función platform():

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

El comando anterior _devuelve una sola cadena identificando la plataforma subyacente con tanta información útil como sea posible.

O usando la función 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', '')

El comando anterior _devuelve un namedtuple() que contiene seis atributos: system, node, release, version, machine y processor.

O usando la función dist():

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

El último comando trata de determinar el nombre de la distribución del sistema operativo Linux name, pero está desaparecido desde Python 3.5 y _se eliminará en Python 3.8 _.