I want to send a command to linux shell and get it's response with java.How can i do this?
Asked
Active
Viewed 450 times
5 Answers
5
Have a look at ProcessBuilder - example here.
ChristopheD
- 106,997
- 27
- 158
- 177
-
Or search this site for "java processbuilder" – Aaron Digulla Nov 03 '09 at 09:38
2
You should look at the Runtime class, and its exec() family of methods.
It's probably best to explicitly specify that you want to run the command through a shell, i.e. create a command line like "bash -c 'my command'".
unwind
- 378,987
- 63
- 458
- 590
1
Execute a process like this
Runtime.getRuntime().exec("ls");
...then you could get the process input stream and read it with a Reader to get the response
Alberto Zaccagni
- 29,658
- 11
- 72
- 103
0
See the Runtime class and the exec() method.
Note that you need to consume the process's stdout/sterr concurrently, otheriwse you'll get peculiar blocking behaviour. See this answer for more information.
Community
- 1
- 1
Brian Agnew
- 261,477
- 36
- 323
- 432
0
I wrote a little class to do this in a very similar question a couple of weeks ago:
java shell for executing/coordinating processes?
The class basically let's you do:
ShellExecutor excutor = new ShellExecutor("/bin/bash", "-s");
try {
System.out.println(excutor.execute("ls / | sort -r"));
} catch (IOException e) {
e.printStackTrace();
}