1

我正在尝试在 Java 中执行以下命令,以终止通过 java 执行的 bash 脚本的衍生进程:

kill $(pgrep -P $(pgrep -P 5537)) 

我正在使用 apache Commons Exec Commandline 来构建命令,但这与在这里使用 ProcessBuilder 没有什么不同。所以这是我到目前为止所拥有的:

CommandLine cmdLine = new CommandLine("bash");
cmdLine.addArgument("-c");
cmdLine.addArgument("kill $(pgrep -P $(pgrep -P "+pid+"))");

我得到错误

bash: $'kill 7940\n7941\n7942\n7943': Command not found.

通常我现在会尝试从命令中取出换行符,但它也不能只杀死一个进程,因为那时我得到了错误:

bash: kill 7980: Command not found.

一方面我需要使用 bash 来使用变量,另一方面我不能使用它,因为 kill 不能用它执行......

4

1 回答 1

1

第一kill -9 pidnumber

为什么需要 bash 变量?当java给你字符串来存储变量?

第三,为什么不试试System.Runtime.getRuntime().exec()

你也有权限杀死任务吗?试过了sudo kill -9 pid吗?

于 2012-10-19T09:03:55.013 回答