it-swarm-es.tech

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

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

204
Daryl Spitzer

El kernel 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á. Ha habido intentos para hacer que esto sea consistente, pero en última instancia, varía, por desgracia. Las herramientas LSB proporcionan esta información, pero, irónicamente, no se instalan de forma predeterminada 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

De lo contrario, el método más cercano y ampliamente disponible es verificar 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 unos 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 en este 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}

trabajará más a menudo. Las instalaciones de "servidor" eliminadas y barebones podrían no tener instalado el paquete 'release' para la distribución.

Además, dos programas de terceros que puede utilizar 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 pancartas de notificación de acceso.

Relacionado: ¿Cómo saber la versión del paquete de software instalado en el nodo? , títere .

264
jtimberman

También puedes probar:

$ cat /etc/issue

Por lo general (aunque no siempre) le dirá qué distribución está utilizando. /etc/issue es el archivo utilizado para la pantalla de inicio de sesión.

39
Pablo Santa Cruz

Kernel: uname -a

20
raspi
cat /etc/os-release

como mínimo para Ubuntu, Fedora y OpenSUSE.

No funciona para OS X al menos hasta 10.9 (Mavericks). Use sw_vers en su lugar.

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

Redhat 6.1 tiene cat/etc/redhat-release

15
sweetfa

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

14
CesarB

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

12
iono

Kernel: uname -r

Distro: lsb_release -a

Estos se ejecutarán en la mayoría de los sistemas Linux

6
Albert Z.

Un trazador de líneas

lsb_release -a && uname -r
5
Serge Stroobandt

Este problema también se puede resolver usandoPython 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 cadena única que identifica la plataforma subyacente con la mayor cantidad de información útil 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 una 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 intenta determinar el nombre del nombre de distribución del sistema operativo Linux, pero estáobsoleto desde Python 3.5y se eliminará en Python 3.8 .

1
simhumileco