7
votes

Déterminez la version Linux de Java

Je me demande s'il y a un moyen de déterminer quelle version de Linux je suis en cours d'exécution (c'est-à-dire différencier entre Rhel4, Rhel5) de la JVM. Je cherche juste un moyen cohérent de différencier les systèmes d'exploitation et leurs versions.


0 commentaires

6 Réponses :


4
votes

Je ne crois pas qu'il y ait des propriétés système que vous pouvez examiner cela vous donnera cette information. Que diriez-vous de simplement exécuter un CAT / PROC / version et analyse de la sortie.


0 commentaires

1
votes

Quelle version de la distribution que vous utilisez ou quelle version du noyau? Je sais que Red Hat utilisait son numéro de version dans un fichier appelé / etc / redhat-version. Je ne suis pas sûr de l'autre distro. Vous pouvez obtenir la version du noyau en effectuant un appel système sur "Uname -r"


0 commentaires

8
votes

Le JVM vous donne quelques informations de base sur le système d'exploitation via

System.getProperty()

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


0 commentaires

1
votes

/ province / version est un bon début. / etc / problème pourrait également être utile.


0 commentaires

1
votes

si le système.geproperty (x) où x est "os.name", "os.arch", "os.version" ne fonctionne pas pour vous, alors vous devrez peut-être avoir recours à un processus natif comme suggéré (Cat / Proc / Version, ou LSB_Release, etc.)


0 commentaires

0
votes

Vous pouvez également consulter lsb_release xxx

vous donnerait quelque chose comme: xxx


2 commentaires

La question a déclaré "à partir de la JVM" et cette réponse donne une commande à exécuter sur la coque de Linux


J'ai utilisé l'API du processus de JDK pour exécuter la commande, lisez l'entrée pendant environ 3 mois. J'ai fini par avoir des problèmes parce que java.lang.process n'est pas conçu pour travailler avec des scripts, plus particulièrement que les tampons de processus n'étaient pas assez gros pour me permettre de lire le résultat. Le symptôme était que sur certains VMS, je reçois un résultat de chaîne vide, et sur certains, je n'étais pas. J'ai donc mis à jour mon approche pour démarrer / bin / bash en tant que processus. Ensuite, j'écris "/ usr / bin / lsb_release -a \ n" au flux de sortie de processus et lisez à partir du flux d'entrée. Fonctionne beaucoup plus systématiquement.