【发布时间】:2013-10-10 06:37:29
【问题描述】:
我正在为 Ubuntu 环境使用 java。我想通过java程序执行一个脚本文件。我已经尝试了以下
try{
Runtime.getRuntime().exec("/usr/lib/flume-ng/bin/flume-ng agent -f /home/c4/Flume/New/ClientAgent.config -n clientAgent");
}
catch(Exception e){
e.printStackTrace();
}
还有
ProcessBuilder pb = new ProcessBuilder("/usr/lib/flume-ng/bin/flume-ng", "agent",
"-f", "/home/c4/Flume/New/ClientAgent.config","-n","clientAgent");
try{
pb.start();
}
catch(Exception e){
e.printStackTrace();
}
但是这两个都不启动我的进程命名为:flume-ng,其他都是传递给它的参数。 Java 程序编译成功,但既不给出异常等也不运行进程。如果我做错了什么,请指导我。
【问题讨论】:
-
Pehrpas 您的程序正在返回您忽略的错误代码(检查 pb.waitFor()),或者它正在返回您也丢弃的错误消息。 pb.getErrorStream().
-
您需要处理新生成的进程的标准输入和输出。我会考虑像 Rafael 建议的那样使用 Apache Commons Exec :)
-
我没有收到错误(编译时或运行时)。但是进程没有执行
-
首先,尝试捕捉 throwable(暂时)。其次,在 strace 下运行这个 hjava 应用程序并查看记录的内容。
标签: java linux process system-calls