当我手动运行此脚本时,浏览器chrome会在一个选项卡中打开该网站(这完全符合我的需要)
但是当我使用Java示例代码运行相同的脚本10次时,它会打开浏览器,但是相同的页面10个TAB会打开10次。
Q值。我怎么能告诉Java代码请运行它,因为它假设是在运行手动执行(所以我只有1个TAB?)?
BASH: /var/tmp/runme.sh (运行1次,仍然按预期始终有1个选项卡)
export DISPLAY=:0.0
ps aux | grep chromium-browser | awk '{ print $2 }' | xargs kill -9;
sleep 8;
chromium-browser --process-per-site --no-discard-tabs --ash-disable-tab-scrubbing -disable-translate "http://www.oracle.com" &
Java: 启动该脚本的10倍
system("/var/tmp/runme.sh &");
public static String system(String cmds) {
String value = "";
try {
String cmd[] = { "/bin/sh", "-c", cmds};
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
value += line + "\n\r";
line = reader.readLine();
}
}
catch (IOException ioe) {
ioe.printStackTrace();
}
catch (InterruptedException ie) {
ie.printStackTrace();
}
return value;
}
答案 0 :(得分:1)
从此行system("/var/tmp/runme.sh &");
第二,也许从那以后,您正在使用它:“/ bin / sh”,每次使用Runtime调用时,Java都会将脚本作为不同的shell运行?
并且您每次都在同一个shell中执行 /var/tmp/runme.sh 。
注意:/ bin / sh是一个解释器,使用Java Runtime,你每次都要调用它的多个实例来执行你的脚本。
答案 1 :(得分:1)
Java有时会受到欢迎。它解决了。
1(在杀死java之前杀死chrome浏览器
2(杀死chrome浏览器后再启动java应用程序
3(现在标签为1,浏览器为1
之前:(错误)
export DISPLAY=:0.0
pkill java;
java -cp SystemV.jar Main.Start "boot chromium now with 1 tab and 1 browser" &
ps aux | grep chromium-browser | awk '{ print $2 }' | xargs kill -9;
chromium-browser --process-per-site --no-discard-tabs --ash-disable-tab-scrubbing -disable-translate "http://www.oracle.com" &
的 AFTER:强> 的
export DISPLAY=:0.0
ps aux | grep chromium-browser | awk '{ print $2 }' | xargs kill -9;
chromium-browser --process-per-site --no-discard-tabs --ash-disable-tab-scrubbing -disable-translate "http://www.oracle.com" &
pkill java;
java -cp SystemV.jar Main.Start "boot chromium now with 1 tab and 1 browser" &
echo "it works now"