【发布时间】:2020-09-19 02:30:35
【问题描述】:
我遇到了 java 的 ProcessBuilder 的奇怪行为。 我尝试的是使用 shell 停止正在运行的屏幕,删除一些文件夹,然后使用另一个 shell 脚本重新启动屏幕。 第一步,杀死正在运行的屏幕,完美运行使用:
ProcessBuilder pb0 = new ProcessBuilder(System.getProperty("user.dir") + "/generator/stop.sh");
在这个 stop.sh shell 中我只是简单地运行
screen -X -S 生成器杀死
它应该可以正常工作。 之后,我使用 org.apache.commons.io.FileUtils 删除了我的目录,然后我想再次启动屏幕。目前我正在这样做:
System.out.println("Restarting the generator");
ProcessBuilder pb1 = new ProcessBuilder();
pb1.directory(new File(System.getProperty("user.dir") + "/generator"));
pb1.command("./start.sh");
try {
Process process = pb1.start();
System.out.printf("Started the generator with %d", process.waitFor());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
这给出了“用 1 启动生成器”,这向我表明屏幕正在运行,而使用 screen -ls 检查时根本不是这种情况。 没有错误,不知道如何从这里继续前进
在 start.sh 中:
screen -S generator java -Xms2G -Xmx2G -jar generator.jar
PS:我使用的是 Debian 10。 也许有人可以在这里帮助我吗? 问候!
【问题讨论】:
标签: java shell processbuilder gnu-screen