¿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?
¿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?
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 .
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.
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
lsb_release -a && uname -r
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 _.