从网上查了些资料,能用Runtime.getRuntime().exec()执行单个命令,问题:
Runtime.getRuntime().exec()能执行依次执行多条命令吗?例如:在linux系统下启动gridftp服务,需要依次运行如下三条命令:
[root@nodeB2 root]# source $GLOBUS_LOCATION/etc/globus-user-env.sh
[root@nodeB2 root]# export GRIDMAP=/opt/globus-4.0.1/etc/grid-mapfile
[root@nodeB2 etc]# /opt/globus-4.0.1/sbin/globus-gridftp-server -p 2811 -S使用Runtime.getRuntime().exec()能做到吗?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zhfj001】截止到2008-07-15 10:06:42的历史汇总数据(不包括此帖):
    发帖的总数量:22                       发帖的总分数:1170                     每贴平均分数:53                       
    回帖的总数量:182                      得分贴总数量:103                      回帖的得分率:56%                      
    结贴的总数量:22                       结贴的总分数:1170                     
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    Runtime   r   =   Runtime.getRuntime   
        
      r.exec("你的命令");
      

  3.   

    GRIDMAP=/opt/globus-4.0.1/etc/grid-mapfile
    可以把它设置为环境变量先
      

  4.   

    把要依次执行的多条命令写到shell里
      

  5.   

    Runtime.getRuntime().exec(/*命令1*/).waitFor();
    Runtime.getRuntime().exec(/*命令2*/).waitFor();
    Runtime.getRuntime().exec(/*命令3*/).waitFor();
    ...public abstract int waitFor() throws InterruptedException
    导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。
    返回:
    进程的出口值。根据惯例,0 表示正常终止。 
    抛出: 
    InterruptedException - 如果当前线程在等待时被另一线程中断,则停止等待,抛出 InterruptedException。
      

  6.   

     Process process = Runtime.getRuntime().exec(stmt1);
               // 控制台的输出信息作为输入流
               // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
               InputStream in = process.getInputStream();
               // 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
               InputStreamReader xx = new InputStreamReader(in, "utf8");
               String inStr;
                  StringBuffer sb = new StringBuffer("");
                  String outStr;
                  // 组合控制台输出信息字符串
                  BufferedReader br = new BufferedReader(xx);
                  System.out.println(br.read());
                  while ((inStr = br.readLine()) != null) {
                      System.out.println(inStr);
                      sb.append(inStr + "\r\n");
                  }
                  outStr = sb.toString();
      

  7.   

    你可以这样,把你的多条命令放在sh里,exec就行了吧
      

  8.   

    写成shell文件后,这一句source $GLOBUS_LOCATION/etc/globus-user-env.sh 
    提示找不到文件,难道是source命令的缘故,请高手指点。
      

  9.   

    改成. $GLOBUS_LOCATION/etc/globus-user-env.sh试试!
      

  10.   

    多谢各位,问题已解决,是由于我在windows写的sh脚本,拿到linux下有些字符不能识别。
    使用sed -i 's/\r//' auto.sh更改字符就可以了。
      

  11.   


    Runtime run=Runtime.getRuntime();
    run.exec("cmd /c javac Calculator.java");
    run.exec("cmd /c java Calculator");
    Calculator是个有界面的程序,为什么编译成功,却运行不出来?
    Calculator程序文件在当前程序的目录文件中的。