Определение версии linux из java

Мне интересно, есть ли способ определить, какую версию Linux я запускаю (т. е. различать RHEL4, RHEL5) из JVM. Я просто ищу последовательный способ различать операционные системы и их версии.

6 ответов


вы также можете посмотреть команду

lsb_release -a

даст вам что-то вроде:

cyril@merlin:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 8.10
Release:    8.10
Codename:   intrepid

JVM дает вам некоторую основную информацию об операционной системе через

System.getProperty()

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

насколько я знаю, он не предлагает конкретную информацию о распространении. По крайней мере, для дистрибутивов debian эта информация хранится в файле

/ etc / issue

таким образом, это может помочь прочитать любой из файлов, где различные дистрибутивы хранят эту информацию.


Я не верю, что есть какие-либо системные свойства, которые вы можете посмотреть, которые дадут вам эту информацию. Как насчет просто выполнения cat /proc/version и анализа выходных данных.


какую версию дистрибутива вы используете или какую версию ядра? Я знаю, что Red Hat хранил номер своей версии в файле с именем /etc / redhat-release. Я не уверен насчет другого дистрибутива. Вы можете получить версию ядра, выполнив системный вызов "uname-r"


/prov/version - хорошее начало. /etc/issue также может быть полезно.


Если система.getProperty (x), где x - "os.имя", " os.arch", " os.версия " не работает для вас, тогда вам, возможно, придется прибегнуть к запуску собственного процесса, как предложено (cat /proc/version или lsb_release и т. д.)