近日实现一个需求,需要用java执行Linux命令,但是命令在Linux上面可以执行,但是java用
Runtime.getRuntime().exec(cmd)执行却不成功.比如关闭redis进程命令
ps -a | grep redis | xargs kill -9
用java执行却不行:
String cmd = "ps -a | grep redis | xargs kill -9";
Process exec = Runtime.getRuntime().exec(cmd);
需要修改为:
String linuxCmd = "ps -a | grep redis | xargs kill -9";
String[] cmd = new String[]{"sh","-c",linuxCmd};
exec = Runtime.getRuntime().exec(cmd);
重点是加上"sh"和"-c"
就可以啦!!