1

Java から次のコマンドを実行しようとしています (UNIX ボックスで正しく実行されます)-

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 - コマンドがシェルの下で完全に正常に実行されることを思い出してください。

4

1 に答える 1

6

実行しようとしているのはシェルコマンドラインですが、実行killしてすべての引数を渡しているため、からエラーが発生しています/usr/bin/kill

bashJava コードから同様にシェルを実行し、-cオプションを使用してコマンド ラインを渡す必要があります。

これを行う場合は、コマンド引数を単一の文字列ではなく配列として渡すことをお勧めします。

String[] command = {"bash","-c","kill -9 `ps -ef | grep -i myScript.sh | grep bash | awk '{print $2}'`"};
于 2013-03-28T08:48:30.723 に答える