我正在尝试在 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 不能用它执行......