2008-11-05 13 views
18

A veces necesito acceder a algunos servidores que ejecutan Linux (o tal vez otro SO de tipo Unix), pero no sé cómo verificar qué distribution está en uso en el servidor (allí son tiempos que incluso la persona "responsable" del servidor no sabe).Cómo descubrir qué distribución de Linux está en uso

¿Existe una manera fácil y confiable de descubrir eso, una que sea uniforme y consistente en todos ellos?

+0

@Peter: ¿De verdad era necesario cambiar 'distro' a 'distribución'? –

Respuesta

-1

Trate uname -a

0

puede utilizar 'uname':

[[email protected] ~]$ uname -a 
Linux localhost 2.6.26-ARCH #1 SMP PREEMPT Tue Aug 26 21:15:43 UTC 2008 i686 AMD Athlon(tm) 64 Processor 3000+ AuthenticAMD GNU/Linux 
+1

uname muestra la versión y la arquitectura, pero no la distribución (Red Hat, SuSE, Ubuntu, ....) –

+1

normalmente la distribución agrega a la versión, como en el ejemplo, la distribución es Arch Linux. Y para Arch, todas las otras ideas mencionadas excepto/etc/issue tampoco funcionan. Entonces, ¿por qué downvote? – ypnos

0
uname -r 

debe imprimir la versión del kernel actualmente en ejecución (por lo menos, lo hace para Linux, no sé si es lo mismo para * BSD u otros). No es lo mismo que la distribución, pero la versión del núcleo a menudo incluye el nombre de la distribución si está personalizado, como "2.6.27-gentoo-r1" o algo así.

Init a menudo imprime algo en el arranque, pero eso no es muy bueno cuando se está ejecutando.

De lo contrario, que yo sepa, no hay nada universal.

20
cat /etc/*release 

mayoría de las distribuciones poner un archivo lanzamiento en /etc/ (como /etc/redhat-release, /etc/gentoo-release, etc.), que por lo general tiene el número de versión de su distribución en él.

1

En mi .cshrc que tienen

setenv DISTRO ` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' ` 

Para ksh/Bash usuarios, supongo que se traduce en

export DISTRO=` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' ` 

y por supuesto esto puede no funcionar para su distribución favorita. (He tenido problemas con Oracle's Unbreakable Linux dar algo similar a RedHat, pero era lo suficientemente bueno para mis propósitos.)

Actualización Agosto el año 2016 no he usado Linux de esta manera durante un tiempo (2008 es hace mucho tiempo) Parece que esto ya no funciona para los sistemas que ahora tengo.

+0

El hideus 'cat x | sed y | sed z' está, por supuesto, mejor escrito 'sed -e y -e z x'. Véase también [uso inútil de 'cat'] (http://www.iki.fi/era/unix/award.html) – tripleee

6

Esto es, molestamente, un problema más difícil de lo que parece.

Para sistemas Linux, use lsb_release.

$ lsb_release --all 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 8.04.1 
Release:  8.04 
Codename:  hardy 
$ lsb_release -i 
Distributor ID: Ubuntu 

Esto tiene la limitación de que lsb_release funciona solo para las versiones de Linux.

Para todos los sistemas Unix, también puede analizar uname.

$ uname -a 
Linux blue-laptop 2.6.24-21-generiC#1 SMP Tue Oct 21 23:43:45 UTC 2008 i686 GNU/Linux 

Puede encontrar información sobre los sistemas y las distribuciones en el uname Wikipedia page.

+1

Más estrictamente,' lsb_release' solo funciona en sistemas Linux que intentan adherirse a [Linux Standard Base] (https://en.wikipedia.org/wiki/Linux_Standard_Base) especificaciones. – tripleee

1

Encontré que el/etc/issue generalmente tiene algo sobre la distribución en uso.

Pero no sé si está disponible en todas las distribuciones.

+0

Desafortunadamente, muchas distribuciones tienen un problema/etc/mínimo que tiene algo así como "Esto es \ n. \ O (\ s \ m \ r) \ t" en él, lo que no proporciona información real sobre la distribución. –

+0

Sí, funciona en Ubuntu. Obtuve "' Ubuntu 16.04.1 LTS \ n \ l' ". Sí, \ n y \ l son literales (no ASCII 13 y 10). –

3

Debería preguntarse si realmente necesita saber qué distribución está en uso (quizás porque desea compilar un paquete específico para esta distribución). En muchos otros casos, es una idea mucho mejor, simplemente probar y ver si las funciones que necesita están allí o no. Esto puede parecer mucho más trabajo porque debe probar cada característica una por una, pero de esta manera, su software se vuelve mucho más flexible.

+0

algo así como lo que 'configure' hacer, ¿eh? buen punto – Seiti

+0

Yupp, algo así como 'configure' o CMake: http://www.cmake.org/ – WMR

1

El proc file system: Un directorio en Linux con toda la información de nivel de hardware. Tan solo escriba

cd /proc/ 

Allí encontrará una mina de oro de información almacenada en un archivo de texto para toda la información arbitraria sobre el sistema.

+2

Así' cat/proc/version' devolverá información sobre la versión. – Henrik

+0

'cd/proc' por sí solo no hace nada útil. No tiene que 'cd' a un directorio para leer los archivos allí, y normalmente no debería hacerlo (aunque en un shell interactivo, le ahorra escribir rutas largas, pero los scripts en general rara vez necesitan' cd'). – tripleee

+0

Muchos archivos en 'proc' usan cadenas en C, por lo que técnicamente no son texto puro. Pruebe 'tr '\ 000' '\ 012' tripleee

0

Existen diferentes comandos que puede usar para verificar qué distribución está en uso. Aquí estoy mencionando solo 5 de ellos.

  1. lsb_relase -a

lsb_release proporciona información-distribución específica. Mientras que -a muestra toda la información sobre la distribución. También puede usar -d que solo muestra la descripción.

  1. uname -a

uname también proporciona información del sistema. Mientras que -a muestra toda la información. Puede usar man uname para otras opciones.

  1. cat/etc/* Liberación

También puede utilizar cat instrucción para mostrar toda la información de liberación específica de carpeta etc. Este comando realmente lee los archivos lsb-release y os-release de la carpeta /etc.

  1. cat/etc/issue

Este comando lee el archivo de tema del /etc carpeta.

  1. cat/proc/version

Este comando lee la versión archivo de la carpeta /proc. La carpeta /proc contiene información sobre el proceso del sistema.

Cuestiones relacionadas