2014-02-08 76 views
0

我是在Java上使用AWS SDK的新手。我创建了一个程序来从Java创建AWS实例并检查它是否正在运行。但我无法弄清楚如何在运行的实例上运行bash命令。请帮忙!在AWS EC2实例上从JAVA运行Bash命令

try 
       { 
        String lscmd = "ls"; 
        Process p=Runtime.getRuntime().exec(lscmd); 
        p.waitFor(); 
        BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); 
        String line=reader.readLine(); 
        while(line!=null) 
        { 
         System.out.println(line); 
         line=reader.readLine(); 
        } 
       } 
       catch(IOException e1) { 
        e1.printStackTrace(); 
       } 
       catch(InterruptedException e2) { 
        System.out.println("Pblm found2."); 
       } 

但我得到一个错误的说法,

java.io.IOException: Cannot run program "ls": CreateProcess error=2, The system cannot  find the file specified 
at java.lang.ProcessBuilder.start(Unknown Source) 
at java.lang.Runtime.exec(Unknown Source) 
at java.lang.Runtime.exec(Unknown Source) 
at java.lang.Runtime.exec(Unknown Source) 
at ListInstances.main(ListInstances.java:79) 

产生的原因:产生java.io.IOException:CreateProcess的错误= 2,系统无法找到该文件在指定java.lang.ProcessImpl 。在java.lang.ProcessImpl在java.lang.ProcessImpl.start创建(本机方法) 。(来源不明) (来源不明) ... 5个

我不知道如何连接到instanc e我在该实例上创建并运行了此命令。

+1

一个解决方案可能是ssh进入它,然后使用jsch运行命令? – jmpyle771

回答

1

难道是PATH未定义,它不知道在哪里可以找到ls?尝试使用完整路径(例如/bin/ls)进行验证。