使用Linux shell运行java代码,但有哪些进程?

时间:2017-10-18 23:15:18

标签: java linux shell tomcat web

我试图在Java应用程序中运行Linux命令作为SpringFramework(MVC模式)。我需要在Ubuntu服务器上运行一个shell脚本文件。所以我编码如下:   以java方式运行java Application。

public static void connectServcer(){
String host="xxx.xxx.xxx.xxx";
    String user="id";
    String password="pw";
    String[] command = {
            "sh"
            , "/usr/local/bin/runShell.sh"
    };

    System.out.println("cmd run");
    try{

        java.util.Properties config = new java.util.Properties(); 
        config.put("StrictHostKeyChecking", "no");
        JSch jsch = new JSch();
        Session session=jsch.getSession(user, host, 22);
        session.setPassword(password);
        session.setConfig(config);
        session.connect();
        System.out.println("Connected");

        Runtime r = Runtime.getRuntime();

        com.jcraft.jsch.Channel channel=session.openChannel("exec");
        Process process = r.exec(command);
        process.getInputStream();
        channel.setInputStream(null);
        ((ChannelExec)channel).setErrStream(System.err);

        InputStream in=channel.getInputStream();
        channel.connect();
        byte[] tmp=new byte[1024];
        while(true){
          while(in.available()>0){
            int i=in.read(tmp, 0, 1024);
            if(i<0)break;
            System.out.print(new String(tmp, 0, i));
          }
          if(channel.isClosed()){
            System.out.println("exit-status: "+channel.getExitStatus());
            break;
          }
          try{Thread.sleep(1000);}catch(Exception ee){}
        }
        channel.disconnect();
        session.disconnect();
        System.out.println("DONE");
    }catch(Exception e){
        e.printStackTrace();
    }
}

但是这个方法返回错误:

cmd run 
Connected
java.io.IOException: Cannot run program "sh": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at java.lang.Runtime.exec(Runtime.java:620)
    at java.lang.Runtime.exec(Runtime.java:485)
    at com.company.utils.Linux.connectServcer(Linux.java:59)
    at com.company.utils.Linux.main(Linux.java:9)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
    at java.lang.ProcessImpl.start(ProcessImpl.java:137)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 4 more

任何人都可以帮助我吗?我搜索并了解了登录并将其编码了一周,我是java的初学者。

0 个答案:

没有答案