我在java中制作服务器监控应用程序。
我执行shell脚本(wget --no-cache -t 1 -T 1000 --spider ServerURL 2>& 1 | grep'HTTP')
我获得了结果
但是在java exec shell脚本中..
我没有获得结果......
源代码
String command = "wget --no-cache -t 1 -T 1000 --spider " + monitering_url +" 2>&1 | grep 'HTTP'";
shellCmd(command);
public static void shellCmd(String command) throws Exception {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);
//Thread.sleep(5000);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while((line = br.readLine()) != null) {
System.out.println(line);
}
}
monitering_url = serverURL
我想要结果打印......
帮助我!!
答案 0 :(得分:1)
您的命令是一个shell脚本,必须传递给shell进行解释:
Process process = runtime.exec(new String[] {"/bin/sh", "-c", command});
注意使用数组将参数传递给shell进程。如果没有它,命令字符串将在传递给解释器之前被标记化,这不是你想要的。