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();
GitHub 加速计划 / li / linux-dash
10
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:19 天前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐