Collecter la sortie de la commande Linux
Je suis maintenant sur une machine linux. J'ai un programme Java qui permettrait d'exécuter une commande linux, par exemple ps
top
list
ou free -m
.
La façon d'exécuter une commande en Java est comme suit:
Process p = Runtime.getRuntime().exec("free -m");
Comment ai-je pu recueillir la sortie par le programme Java? J'ai besoin de traiter les données en sortie.
source d'informationauteur user84592
Vous devez vous connecter pour publier un commentaire.
Utilisation
Processus.getInputStream()
pour obtenir unInputStream
qui représente le stdout du processus créé récemment.Noter qu'à partir d'/en cours d'exécution d'un processus externe à partir de Java peut être très difficile et a fait quelques pièges.
Qu'ils sont décrits dans cet excellent articlequi décrit également les moyens autour d'eux.
À recueillir la sortie que vous pourriez faire quelque chose comme
Cela permettrait d'exécuter le script, puis recueillir la sortie du script dans une variable. Le lien de Joachim Sauer, en réponse a d'autres exemples de cette situation.
Comme pour une commande besoin d'attendre un moment, ajoutez p.waitFor(); si nécessaire.
Les aspects techniques de l'appel d'un processus externe sont très impliqués. Le jproc bibliothèque permet d'abstraction au-dessus de ces automatiquement la consommation de la sortie de la commande et de fournir le résultat sous forme de chaîne. L'exemple ci-dessus devrait être écrit comme ceci:
String result = ProcBuilder.run("free", "-m");
Il permet également de définir un délai d'expiration, de sorte que votre application n'est pas bloquée par une commande externe qui n'est pas appelé à disparaître.
Ce functioin donnera suite à toute commande linux