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