java - 我如何告诉 Java 代码以普通用户身份从命令行运行脚本时运行脚本?

标签 java linux bash google-chrome chromium

当我手动运行此脚本时,浏览器 chrome 在一个选项卡中打开网站(这正是我所需要的)

但是当我使用 Java 示例代码运行同一个脚本 10 次时,它会打开浏览器,但 10 次是相同的页面 10 个 TAB。

问。我如何告诉 Java 代码请运行它,因为它应该运行手动执行(这样我只有 1 个 TAB?)?

BASH:/var/tmp/runme.sh (运行了 1o 次,但仍按预期始终有 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;
  }

最佳答案

Java 有时很奇怪。解决了。​​

1( kill chromium browser before killing the java

2( after killing chromium browser then launch the java application

3( now the tab is 1 and browser is 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" &

之后:

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"

关于java - 我如何告诉 Java 代码以普通用户身份从命令行运行脚本时运行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701666/

相关文章:

java - Apache Spark 性能

java - 如何创建具有相同值的新实例?

java - 将 dukescript 打包为原生 Windows 应用程序

linux - rhel/centos 上的 VS Code 安装后应该出现在 Gnome 中

c - 尝试在 Cygwin 上编译 checkinstall 时出现 GCC 错误

java - 从时间分割字符串

linux - 有条件地用单词替换数字

php - 将配置的 wordpress 主题/插件应用于多个网站

bash - 如果名称为 : xxx with bash,则替换 yaml 中的值

bash - 以特定方式读取脚本的输出