2009-08-26 12 views
6

Me pregunto si hay una forma de determinar qué versión de Linux estoy ejecutando (es decir, distinguir entre RHEL4, RHEL5) desde dentro de la JVM. Solo busco una forma consistente de diferenciar entre los sistemas operativos y sus versiones.Determine la versión de Linux desde java

Respuesta

0

también puede echar un vistazo a lsb_release

lsb_release -a 

le daría algo así como:

[email protected]:~$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 8.10 
Release: 8.10 
Codename: intrepid 
+0

Lo usaré. Muy apreciado. –

+0

la pregunta dijo "desde dentro de la JVM" y esta respuesta está dando un comando para ejecutar en el shell de linux – dm76

+1

Utilicé la API api de jdk para ejecutar el comando, lea la entrada durante aproximadamente 3 meses. Terminé teniendo problemas porque java.lang.Process no está diseñado para funcionar con scripts, específicamente los búferes de proceso no eran lo suficientemente grandes como para permitirme leer el resultado. El síntoma fue que en ciertas máquinas virtuales recibí un resultado de cadena vacía, y en algunas no. Así que actualicé mi enfoque para iniciar/bin/bash como un proceso. Luego escribo "/ usr/bin/lsb_release -a \ n" en la secuencia de salida del proceso y leo desde la secuencia de entrada. Funciona de manera mucho más consistente. –

4

No creo que haya ninguna propiedad del sistema que pueda consultar que le proporcione esa información. ¿Qué tal si ejecutamos cat /proc/version y analizamos la salida?

+0

me adelantó! :) – javamonkey79

1

¿Qué versión de la distribución está ejecutando o qué versión del Kernel? Sé que Red Hat solía mantener su número de versión en un archivo llamado/etc/redhat-release. No estoy seguro de la otra distribución. Puede obtener la versión del núcleo al hacer una llamada al sistema de "uname -r"

7

La JVM le da una cierta información básica sobre el sistema operativo a través

System.getProperty() 

"os.name" // OS name 
"os.arch" // OS architecture 
"os.version" // OS version 

Por lo que yo sé que no ofertas información específica de distribución. Al menos para las distribuciones Debian esta información se almacena en un archivo llamado

/etc/issue

lo tanto, puede ayudar a la lectura de cualquiera de los archivos donde el distribuciones diferentes almacenar esta información.

+0

por fin, ¡alguien que realmente leyó la pregunta! – dm76

1

/prov/version es un buen comienzo. /etc/issue también podría ser útil.

1

Si el System.getProperty (x) donde x es "os.name", "os.arch", "os.version" no funciona para usted, entonces puede que tenga que recurrir a ejecutar un proceso nativo como sugerido (cat/proc/version, o lsb_release, etc.)

Cuestiones relacionadas