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
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
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?
me adelantó! :) – javamonkey79
¿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"
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.
por fin, ¡alguien que realmente leyó la pregunta! – dm76
/prov/version
es un buen comienzo. /etc/issue
también podría ser útil.
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.)
- 1. Determine la versión de ruby desde Rails
- 2. Determine qué versión de OpenCV
- 3. Determine la versión PHP mínima requerida
- 4. Determine la versión más alta de .NET Framework
- 5. Determine la versión de SQL Server de ADO.NET
- 6. Determine si Linux o Windows en C++
- 7. Determine la arquitectura de destino del archivo binario en Linux (biblioteca o ejecutable)
- 8. Determine la versión HTTP admitida por el servidor web
- 9. Determine la fecha de creación del archivo en Java
- 10. Cambiando la versión de Java
- 11. Determine la distancia desde la costa en Matlab
- 12. C biblioteca para leer la versión EXE de Linux?
- 13. ¿De qué versión de Linux kernel/libc es Java Runtime.exec() seguro con respecto a la memoria?
- 14. Desde la línea de comandos, ¿cómo saber qué versión de Firefox está instalada en Windows/Linux?
- 15. Cómo recuperar la versión de Java utilizando el comando de una sola línea en Linux
- 16. php: determine dónde se llamó a la función desde
- 17. C++ de Linux en nombre de la distribución \ Versión
- 18. Estadísticas de la versión de Java
- 19. Cómo se comprueba la versión de RedHat Enterprise Linux?
- 20. ¿Lees la versión del kernel de Linux usando C?
- 21. Abra una ruta con Desktop.open() desde java en ubuntu (linux)
- 22. Quiere invocar un comando linux shell desde Java
- 23. ¿Cómo se relaciona la versión de Java de Android con una versión de Java SE?
- 24. Buscar la versión MSXML desde el registro
- 25. ¿Cómo puedo abrir una ruta UNC desde Linux en Java?
- 26. Determine el motivo de System.AccessViolationException
- 27. Obtenga la versión de TCL desde la línea de comandos?
- 28. Java daemon en Linux: ¿Opciones?
- 29. Android: Determine el método de entrada activo desde el código
- 30. ¿Dónde puedo encontrar la primera versión del sistema operativo Linux?
Lo usaré. Muy apreciado. –
la pregunta dijo "desde dentro de la JVM" y esta respuesta está dando un comando para ejecutar en el shell de linux – dm76
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. –