解决java使用Runtime.exec执行linux命令失败

java | 2020-07-13 15:07:32

java执行Linux命令很简单,适用这行代码就可以Runtime.getRuntime().exec(cmd),但是今天遇到了执行不成功的问题。

1.问题

例如xshell上了执行成功关闭redis的命令

ps -a | grep redis | xargs kill -9

用Java却执行失败

String cmd = "ps -a | grep redis | xargs kill -9";
Process exec = Runtime.getRuntime().exec(cmd);

2.解决

String linuxCmd = "ps -a | grep redis | xargs kill -9";
String[] cmd = new String[]{"sh","-c",linuxCmd};
exec = Runtime.getRuntime().exec(cmd);

重点是加上"sh"和"-c",它可以让 bash 将一个字串作为完整的命令来执行,适用相同的权限,也能获取所有的输出。

登录后即可回复 登录 | 注册
    
关注编程学问公众号