Java Runtime.getRuntime().exec 不执行
在linux服务器上用java调用脚本,直接写
Java Runtime.getRuntime().exec(“要执行的命令”)有时候发现并不能执行响应的命令。
原因
1.这是因为linux执行命令需要使用linux系统自带的sh工具,而java虚拟机有时候并不能获取到系统的环境变量,导致命令无法被执行
2.还有可能就是异常太多导致异常栈满了,生产者满了无人消费,程序便阻塞了
解决方法
在命令前加上
/bin/sh -c
表示调用系统/bin目录下的sh工具
如果你用的是字符串传递命令,可以这么写
String [] cmd={"/bin/sh","-c","chmod 755 ./do*"};
Runtime.getRuntime().exec(cmd);
获取异常信息和正常输出信息
Runtime.getRuntime().exec(run).getErrorStream();
Runtime.getRuntime().exec(run).getInputStream();