java代码执行linux命令,执行Linux命令在Java中

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...

解决方案

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?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值