2017-09-13 27 views
3

我試圖執行從Java代碼如下:在調用Runtime.getRuntime()EXEC()得到錯誤:/斌/慶典:沒有這樣的文件或目錄

 String[] cmd = { "/bin/bash", "netstat -nr | grep '^0.0.0.0' | awk '{print $2}'" }; 
     Process process = Runtime.getRuntime().exec(cmd); 
     process.waitFor(); 
     BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     BufferedReader inputError = new BufferedReader(new InputStreamReader(process.getErrorStream())); 
     String line = null; 
     while ((line = input.readLine()) != null) { 
      logger.info(line); 
     } 
     String lineError = null; 
     while ((lineError = inputError.readLine()) != null) { 
      logger.info(lineError); 
     } 

在執行這個,我不是從輸入流獲取任何輸出。但錯誤流中,我看到以下錯誤:

/bin/bash: netstat -nr | grep '^0.0.0.0' | awk '{print $2}': No such file or directory 

我已經驗證/斌/ bash的存在,如果我把下面的內容在sh文件,並執行相同的,我得到正確的輸出:

#!/bin/bash 
netstat -nr | grep '^0.0.0.0' | awk '{print $2}' 

我看了很多類似的問題在stackoverflow,但沒有解決方案爲我工作。

回答

2

您需要提供您要作爲參數來執行到的-c選項的命令/bin/bash

,這樣你通過exec運行命令倒像是:/bin/bash -c "netstat -nr | grep '^0.0.0.0' | awk '{print $2}'"

相關問題