2009-08-26 11 views
6

Zastanawiam się, czy istnieje sposób na sprawdzenie, która wersja Linuksa jest uruchomiona (np. Rozróżnienie między RHEL4, RHEL5) a JVM. Poszukuję spójnego sposobu rozróżniania systemów operacyjnych od ich wersji.Określanie wersji linuksowej z java

Odpowiedz

0

można również spojrzeć na lsb_release

lsb_release -a 

dałby ci coś takiego:

[email protected]:~$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 8.10 
Release: 8.10 
Codename: intrepid 
+0

Użyje tego. Bardzo doceniane. –

+0

pytanie "z wewnątrz JVM", a ta odpowiedź daje polecenie uruchomienia na powłoce linuxowej – dm76

+1

Użyłem api aplikacji jdk do uruchomienia wydania polecenia, odczytaj dane wejściowe przez około 3 miesiące. Pojawiły się problemy, ponieważ java.lang.Process nie został zaprojektowany do pracy ze skryptami, w szczególności bufory procesów nie były wystarczająco duże, aby umożliwić mi odczytanie wyniku. Symptomem było to, że na niektórych maszynach wirtualnych otrzymałem pusty wynik, a na niektórych nie. Więc zaktualizowałem moje podejście do uruchomienia/bin/bash jako procesu. Następnie zapisuję "/ usr/bin/lsb_release -a \ n" do strumienia wyjściowego procesu i czytam ze strumienia wejściowego. Działa znacznie bardziej konsekwentnie. –

4

Nie wierzę, że istnieją jakieś właściwości systemu, na które można spojrzeć, które dostarczą tych informacji. Co powiesz na wykonanie tylko cat /proc/version i analizowanie danych wyjściowych.

+0

beat mnie do niego! :) – javamonkey79

1

Którą wersję używanej dystrybucji lub której wersji jądra? Wiem, że Red Hat używał ich numeru wersji w pliku o nazwie/etc/redhat-release. Nie jestem pewien co do innych dystrybucji. Można pobrać wersję jądra wykonując wywołanie systemowe na „uname -r”

7

JVM daje pewne podstawowe informacje o systemie operacyjnym poprzez

System.getProperty() 

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

O ile wiem, to nie ma ofert rozpowszechniać określone informacje. Przynajmniej na dystrybucje Debiana ta informacja jest przechowywana w pliku o nazwie

/etc/issue

Więc może pomóc czyta dowolne pliki, gdzie inna dystrybucje przechowywać te informacje.

+0

w końcu ktoś, kto rzeczywiście czyta pytanie! – dm76

1

/prov/version to dobry początek. /etc/issue może być również pomocny.

1

Jeśli System.getProperty (x) gdzie x to "os.nazwisko", "os.arch", "os.wersja" nie działa dla ciebie, być może trzeba będzie uruchomić proces natywny jako sugeruje (cat/proc/version lub wynik komendy lsb_release itp)

Powiązane problemy