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. P>
6 Réponses :
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 CODE> et analyse de la sortie. P>
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" p>
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
/ province / version code> est un bon début. / etc / problème code> pourrait également être utile. p>
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.) P>
Vous pouvez également consulter lsb_release vous donnerait quelque chose comme: p>
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.