[英]How to run multiple Linux commands using java.lang.process?
我有一個如下所示的例子。 命令
iscsiadm -m discovery -t st -p iscsiInfo.ipAddress
將在這里執行,如果我想在執行此命令后執行額外命令,如果
ls /var/lib/iscsi/nodes
如何使用java.lang.process做到這一點?
添加,我只需要執行第一個命令,但我需要獲得第二個命令結果並在GUI中顯示它。
public static void main(String args[]) {
try {
String line;
Process p = Runtime.getRuntime().exec("iscsiadm -m discovery -t st -p iscsiInfo.ipAddress");
BufferedReader bri = new BufferedReader
(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader
(new InputStreamReader(p.getErrorStream()));
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
System.out.println(line);
}
bre.close();
p.waitFor();
System.out.println("Done.");
}
catch (Exception err) {
err.printStackTrace();
}
}
您可以運行運行多個命令的shell。
例如
Runtime.getRuntime().exec("sh", "-c",
"iscsiadm -m discovery -t st -p iscsiInfo.ipAddress &&"
+" ls /var/lib/iscsi/nodes");
如果使用ProcessBuilder,則可以將錯誤重定向到標准輸出,並使用一個流進行讀取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.