2014-03-28 197 views
0

我試圖從java運行一個命令。但命令沒有執行。任何人都可以指出爲什麼?從java運行一個Linux命令

String path = dest+"/info_updated.csv"; 
    File file = new File(path); 
    String command = "sed -i '/" + subscriberId + "/d' "+file; 
    System.out.println("command "+command); 

     Runtime run = Runtime.getRuntime(); 

      Process p = null; 
      try { 
      p = run.exec(command); 

      InputStream errorStream = p.getErrorStream(); 
      p.waitFor(); 

      } catch (IOException ioe) { 
      ioe.printStackTrace(); 
      System.out.println("ERROR.RUNNING.CMD"); 
      } catch (Exception e) { 
      e.printStackTrace(); 
      } finally { 
      p.destroy(); 
      } 
      return true; 
    } 

在日誌中它正在正確地打印命令。

command sed -i '/L13876110226750000/d' /usr/share/apache-tomcat-6.0.37/webapps/SMS/info_updated.csv 

但它沒有執行。

+0

'-e'代替或補充'-i'? – user3159253

+0

定義「不執行」,任何堆棧跟蹤?另外,這很可能會使tomcat重新部署SMS webapp – 2014-03-28 06:29:03

+0

沒有shell =>不引用。 –

回答

2

您可以在命令前添加/bin/sh -c並嘗試一下。

像這樣:

String[] command = {"/bin/sh", "-c", "sed -i '/" + subscriberId + "/d' "+file}; 
Process p = run.exec(command); 
+0

它的工作。謝謝@locoyou – Randeep