如何从Java运行linux脚本

时间:2013-10-29 14:16:40

标签: java linux bash runtime.exec

我想从Java程序运行linux脚本,并且只在脚本停止时才继续执行程序。我对阅读脚本输出不感兴趣...任何人都可以帮助我吗? 非常感谢, 并原谅我的英语不好

2 个答案:

答案 0 :(得分:2)

假设所有其他线程都空闲:

// run the script.
Process proc = Runtime.getRuntime().exec("/path/to/myscript");
// wait for the return code.
int ecode = proc.waitFor();

如果您的脚本有更复杂的参数,或者它需要监视STDOUT,STDERR或需要其他修改(比如向STDIN提供数据,或更改执行目录,环境变量等),那么你应该这样做有效的过程,但您应该手动构建和启动过程,而不是使用Runtime.exec(...)。阅读Process javadocProcessBuilder javadoc了解如何设置,然后启动它。

答案 1 :(得分:1)

您也可以改为启动bash解释器

Process proc = Runtime.getRuntime().exec("/bin/bash /path/to/myscript");
int ecode = proc.waitFor();

当@rolfl解决方案可能无效时(非可执行脚本文件,#!/标头丢失等),这可能适用于一些普遍破坏的情况