Executing Linux Command in Java

2019-08-01 20:00发布

I'm trying to execute the following Command in Java in order to kill the spawned process of bash script which is executed through java :

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

I'm using apache Commons Exec Commandline to build the Command but it's no different to using ProcessBuilder here. So here is what I have so far:

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

I get the error

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

Normally I would now try to get the newlines out of the Command but it also doesn't work to kill just a single process because then I get the error :

bash: kill 7980: Command not found.

One the one hand I need to use bash to use the variables and on the other hand I can't use it because kill can't be executed with it...

1条回答
祖国的老花朵
2楼-- · 2019-08-01 20:26

firstly kill -9 pidnumber

Why would you need the bash variables? when java gives you strings to store variables?

Thirdly why not try System.Runtime.getRuntime().exec() ?

Also do you have permissions to kill the task? tried sudo kill -9 pid?

查看更多
登录 后发表回答