¿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 funciona 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 funciona en cualquier sistema Linux?
Respuestas:
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 finalmente varía, desafortunadamente. Las herramientas LSB proporcionan esta información, pero, irónicamente, no están instaladas de forma predeterminada en todas partes. Ejemplo en un sistema Ubuntu 9.04 con el lsb-release
paquete instalado:
$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty
De lo contrario, el método más ampliamente disponible es verificar archivos. Estos existen en la mayoría de las plataformas comunes y en sus derivados (es decir, Red Hat y CentOS)./etc/something-release
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 sí /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}
con mayor frecuencia funcionará. Las instalaciones de "servidor" simplificadas y simples pueden 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 encontrar la versión del paquete de software instalado en el nodo? , Títere .
También puedes probar:
$ cat /etc/issue
Sin embargo, generalmente (no siempre) le dirá qué distribución está utilizando. /etc/issue
es el archivo utilizado para la pantalla de inicio de sesión.
\S[newline]Kernel \r on an \m
Núcleo: uname -a
cat /etc/os-release
como mínimo para Ubuntu, Fedora y OpenSUSE.
No funciona para OS X al menos hasta 10.9 (Mavericks). Utilice sw_vers en su lugar.
OpenSUSE tenía cat / etc / SuSE-release hasta 13.1 pero está en desuso a favor de os-release.
Redhat 6.1 tiene cat / etc / redhat-release
Este problema también se puede resolver usando Python con el platform
módulo :
Usando la platform()
función:
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 que identifica la plataforma subyacente con tanta información útil como sea posible.
O usando la uname()
función:
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()
contengan seis atributos: system
, node
, release
, version
, machine
, y processor
.
O usando la dist()
función:
python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')
El último comando intenta determinar el nombre de la distribución del sistema operativo Linux , pero está en desuso desde Python 3.5 y se eliminará en Python 3.8 .