Мне интересно, есть ли способ определить, какую версию Linux я использую (т.е. различать RHEL4, RHEL5) из JVM. Я просто ищу последовательный способ различать операционные системы и их версии.
Определить версию linux из java
Ответы (6)
Вы также можете ознакомиться с 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
JVM дает вам некоторую базовую информацию об операционной системе через
System.getProperty()
"os.name" // OS name
"os.arch" // OS architecture
"os.version" // OS version
Насколько я знаю, он не предлагает конкретной информации о распространении. По крайней мере, для дистрибутивов Debian эта информация хранится в файле с именем
/и т.д./вопрос
Так что это может помочь прочитать любой из файлов, в которых разные дистрибутивы хранят эту информацию.
Я не верю, что есть какие-то системные свойства, на которые вы можете посмотреть, что даст вам эту информацию. Как насчет того, чтобы просто выполнить cat /proc/version
и проанализировать вывод.
Какую версию дистрибутива вы используете или какую версию ядра? Я знаю, что Red Hat хранила номер своей версии в файле с именем /etc/redhat-release. Я не уверен в другом дистрибутиве. Вы можете получить версию ядра, выполнив системный вызов «uname -r».
/prov/version
- хорошее начало. /etc/issue
тоже может быть полезно.
Если System.getProperty(x), где x — это «os.name», «os.arch», «os.version», у вас не работает, вам, возможно, придется прибегнуть к запуску собственного процесса, как было предложено (cat / proc/версия или lsb_release и т. д.)