Linux执行命令的问题
我用java写了一个程序去plink到其他的linux机子上面去执行脚本,
就是这样一条命令
plink -ssh 192.168.1.120 -l test -pw test -m /usr/local/tomcat6/webapps/fort/uploadScript/20110906172533.txt
我手动执行是可以的但是我使用java程序
Process process=Runtime.getRuntime().exec("plink -ssh 192.168.1.120 -l test -pw test -m /usr/local/tomcat6/webapps/fort/uploadScript/20110906172533.txt");
BufferedReader new BufferedReader(new InputStreamReader(process.getInputStream()));
while (br.readLine() != null) {
System.out.println(br.readLine());//这个样子打印执行结果返回的值
}
没有任何的返回结果输出。请高手指点一下!谢谢!
------解决方案--------------------LZ没看我的回复?
Process process=Runtime.getRuntime().exec 只是会开一个子进程,但是进程被执行了没有,执行结束了没有,是随机的,所以应该是主线程等待process执行结束(否则process还没执行,主线程自己就先结束了),用另外一个一般线程去打印process的信息,因为是一般线程(非守护线程),所以就算主程序结束了,线程也还可以执行。
不知道LZ能不能明白?
------解决方案--------------------have a try
Java code
final Process process=Runtime.getRuntime().exec("plink -ssh 192.168.1.120 -l test -pw test -m /usr/local/tomcat6/webapps/fort/uploadScript/20110906172533.txt");
Thread t = new Thread() { //启动一个线程来打印
public void run() {
try {
sleep(1000);
BufferedReader new BufferedReader(new InputStreamReader(process.getInputStream()));
while (br.readLine() != null) {
System.out.println(br.readLine());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
t.start();
process.waitFor(); //这个不要也可以