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 将一个字串作为完整的命令来执行,适用相同的权限,也能获取所有的输出。