Определить версию Linux из Java - PullRequest
7 голосов
/ 27 августа 2009

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

Ответы [ 6 ]

8 голосов
/ 27 августа 2009

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

System.getProperty()

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

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

/ и т.д. / вопрос

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

4 голосов
/ 27 августа 2009

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

1 голос
/ 27 августа 2009

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

1 голос
/ 27 августа 2009

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

1 голос
/ 27 августа 2009

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

0 голосов
/ 27 августа 2009

Вы также можете взглянуть на lsb_release

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...