【发布时间】:2012-11-22 08:25:55
【问题描述】:
我想从下面的程序中运行一个 shell 脚本,但它似乎没有做任何事情。我直接在 linux 终端中运行了相同的命令,它工作正常,所以我猜这是我的 java 代码。如您所见,我首先使用 PrintWriter 将命令写入 shell 脚本,但我希望这不会影响 shell 脚本本身的运行。任何帮助将不胜感激!
public static void main(String[] args) {
// TODO Auto-generated method stub
String nfdump = "nfdump -o csv -r /home/shane/Documents/nfdump/nfcapd.201211211526>blank.txt";
try {
FileWriter fw = new FileWriter("/home/shane/Documents/script.sh");
PrintWriter pw = new PrintWriter(fw);
pw.println("#!/bin/bash");
pw.println(nfdump);
pw.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Process proc = null;
try {
proc = Runtime.getRuntime().exec("sh /home/shane/Documents/script.sh");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
【问题讨论】:
-
看看 ProcessBuilder 而不是 Runtime.getRuntime()... 当我使用它时,我似乎遇到的问题更少,事情看起来更难以理解
-
好奇你为什么不直接执行
nfdump -
我希望能够从我的 GUI 中使用 nfdump,它是我正在构建的软件的一部分
-
你能检查
script.sh是否为空吗? -
不不为空! ProcessBuilder 似乎工作正常!