我試圖從Java執行以下命令,執行一個Unix命令(在UNIX系統中運行正常) -與反引號從Java
kill -9 `ps -ef | grep -i myScript.sh | grep bash | awk '{print $2}'`
但通過Java執行時,我獲得以下錯誤 -
/usr/bin/kill[8]: `ps: Arguments must be %job or process ids
Exit : 1
代碼:
String command = "kill -9 `ps -ef | grep -i myScript.sh | grep bash | awk '{print $2}'`";
Process process=Runtime.getRuntime().exec(command);
InputStream stderr = process.getErrorStream();
InputStreamReader inputStream = new InputStreamReader(stderr);
BufferedReader reader = new BufferedReader(inputStream);
String error = null;
while((error = reader.readLine()) != null) {
System.out.println(error);
}
exitVal = process.waitFor();
System.out.println("Exit : "+ exitVal);
PS - 只是提醒一下,該命令在shell下運行得非常好。
backtick magic是由shell完成的,在這裏你運行命令kill without shell,這就是爲什麼反引號沒有被評估的原因。 – fvu 2013-03-28 08:49:08
你可以將它分成'ps'和'kill'部分。 – 2013-03-28 08:49:59