Ubuntu Java: How to run Linux shell scipt from Java program and fetch back its output

Hi: I am using Java (HTTPUnit) in Linux machine. I am using HTTPUnit multi thread to visit a web application (Hibernate, Spring, tomcat, mysql). Experts in this forum give me the script to see Tomcat JVM memory consumption. Now when I use HTTPUnit to visit a page, then I want to check memory usage by the program themself. And see how much memory consumption it takes. If the memory consumption is bigger, I could write it to some file. My question is from Java program how to run a linux script and how to get output back.

The script is as follows: It could be stored in some executable file called checkTomcatJVM.sh.

ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | grep java
JianJunShenAsked:
Who is Participating?
 
flob9Connect With a Mentor Commented:
Something like this :

Process proc = Runtime.getRuntime().exec(new String[] {"script","param"});

byte[] buff = new byte[1024];

InputStream out = proc.getInputStream();
int nb = out.read(buff);


But, as mentionned before, calling external process for this purpose is quite dirty.
0
 
ksivananthCommented:
you can use the Runtime class from java to get the total memory and freememory!

check Runtime.freeMemory()
Runtime.totalMemory
0
 
jwentingCommented:
Use ProcessBuilder to execute the external process.
Wait for the process to complete, and capture its output stream.
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
flob9Commented:
Runtime.getRuntime().exec(new String[] {"script","param"});
0
 
JianJunShenAuthor Commented:
Runtime.getRuntime().exec(new String[] {"script","param"});

This sounds a good solution to run script. But how to fetch output?
0
 
JianJunShenAuthor Commented:
Oh; sorry , I push the wrong button. Now the excellent answer would be closed. My mistake.
0
 
JianJunShenAuthor Commented:
Excellent answer and very fast.
0
 
objectsCommented:
you need to read in a loop to ensure you get all output written to stdout


http://helpdesk.objects.com.au/java/runtime-exec-locks-up
0
All Courses

From novice to tech pro — start learning today.