当前位置: 代码迷 >> J2SE >> Linux执行命令的有关问题
  详细解决方案

Linux执行命令的有关问题

热度:193   发布时间:2016-04-24 18:09:07.0
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(); //这个不要也可以