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
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
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.
beat mnie do niego! :) – javamonkey79
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”
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.
w końcu ktoś, kto rzeczywiście czyta pytanie! – dm76
/prov/version
to dobry początek. /etc/issue
może być również pomocny.
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)
- 1. Określanie wersji easy_install/setuptools
- 2. Pip: Określanie wersji podrzędnej
- 3. Programowe określanie wersji Mono w wersji
- 4. Określanie wersji programu SQL Server z ADO.NET
- 5. Określanie najnowszej wersji konkretnej gałęzi z altanką
- 6. Określanie numerów wersji w Bower
- 7. rozmiar pliku powłoki linuksowej
- 8. Określanie wersji Pythona dla Virtualenv w Requirements.txt
- 9. Określanie obsługiwanej wersji HTTP przez serwer WWW
- 10. Poprawianie serializacji: określanie wersji klasy szablonów
- 11. Określanie architektury JRE w wersji 32-bitowej i 64-bitowej
- 12. Java 1.6 - określanie dowiązań symbolicznych
- 13. Określanie wersji docelowej OS X i docelowej wersji wdrażania z poziomu standardowego
- 14. Wyszukiwanie plików rozmytych w konsoli linuksowej
- 15. Określanie portu Play 2.0 z "dist"
- 16. Sprawdzanie zgodności wersji java
- 17. Określanie ścieżki Java dla pliku właściwości
- 18. Określanie wersji zespołów używanych przez/odniesione w innym zestawie
- 19. Określanie minimalnej wersji OSX binarny został skompilowany dla
- 20. JAVA Określanie portu za pomocą InetAddress
- 21. Ant używa złej wersji java
- 22. Jedna linia, jeśli/else warunek w skrypcie powłoki linuksowej
- 23. Określanie rozmiaru czcionki użytkownika
- 24. Migracja do wersji Java przestarzała Data method
- 25. Określanie kolejności procesorów adnotacji
- 26. Wzór implementacji specyficznej dla wersji klasy Java
- 27. Konwersja z wersji podwójnej na zmienną w języku Java
- 28. Określanie zdalnego adresu IP klienta dla wywołania Java RMI
- 29. Lista głównych numerów wersji formatu pliku Java?
- 30. Określanie przyszłych przejść stref czasowych
Użyje tego. Bardzo doceniane. –
pytanie "z wewnątrz JVM", a ta odpowiedź daje polecenie uruchomienia na powłoce linuxowej – dm76
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. –