我想从java类调用我的rrdtool cmd,不知道如何去做。我如何从一个Java程序运行Linux终端cmd
我已经从我的终端测试了我的RRDTool cmd,它已成功,请参阅下文。
rrdtool update mydb.rrd 1385056701:6:5
如何从java类执行此cmd?
我想从java类调用我的rrdtool cmd,不知道如何去做。我如何从一个Java程序运行Linux终端cmd
我已经从我的终端测试了我的RRDTool cmd,它已成功,请参阅下文。
rrdtool update mydb.rrd 1385056701:6:5
如何从java类执行此cmd?
您可以使用下面的命令格式来运行您的Linux命令。
Runtime r = Runtime.getRuntime();
Process p = r.exec(yourcmd);
请通过Running unix command from Java和Unable to run Unix command in Java-Stackoverflow
希望你得到你的答案在这里。
试试这个
public class ShellTest {
public static void main(String[] args) throws java.io.IOException, java.lang.InterruptedException {
// Get runtime
java.lang.Runtime rt = java.lang.Runtime.getRuntime();
// Start a new process: UNIX command ls
java.lang.Process p = rt.exec("ls");
// Show exit code of process
System.out.println("Process exited with code = " + rt.exitValue());
}
}
您可以使用运行#EXEC用于这一目的。如果您希望对已启动的进程进行类似于Java的控制,则会有一个名为zt-exec的优秀库,使处理进程变得更加简单。 ProcessBuilder还提供了与Java标准库附带的Runtime#exec相比较小的API改进。
需要注意的一点是,Java进程只需很少的缓冲区即可处理输入和输出流,一旦这些缓冲区运行完成,就会阻塞进程。这种情况默默地发生。 zt-exec可以帮助你。
尝试像this(如paxdiablo回答):
public static void main(String args[]) {
String s;
Process p;
try {
p = Runtime.getRuntime().exec("ls -aF");
BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("exit: " + p.exitValue());
p.destroy();
} catch (Exception e) {}
}
还要检查java.lang.Runtime.exec了解详情。
在单独的进程中执行指定的字符串命令。
这是一种方便的方法。调用形式为exec(command) 的行为与调用exec(命令,null, null)的行为完全相同。
在Java中的现实生活中使用的rrdtool的。 或 https://code.google.com/p/rrd4j/
对于java中rrdtool的本地版本。
我在java程序拼命地跑我的rrdtool的命令如下:
Process p = null;
try {
ProcessBuilder pb = new ProcessBuilder("/usr/bin/rrdtool","lastupdate", rrdPath);
pb.redirectErrorStream(true);
p = pb.start();
int exitVal = p.waitFor();
if (exitVal == 0)
System.out.println("exitVal of rrdLastUpdate is Successful");
else
System.out.println("exitVal of rrdLastUpdate is Abnormal");
} catch (Exception e) {
System.out.println("Problem in executing rrdlastupdate()");
e.printStackTrace();
}//end of try-catch
我希望这是有益的ü:)我在Java中其他一些rrdtool的指令工作。如果您需要更多帮助,我会很乐意提供帮助。
请参阅:[如何运行linux命令在java代码](http://stackoverflow.com/questions/3403226/how-to-run-linux-commands-in-java-code ) – abronan