使用自己的会话启动屏幕&命令,直接分离,可以执行以下操作:
screen -dmS jar1 bash -c "java -jar jar1.jar"
来自命令行,其中
screen
-D
而不是
-d
例如,对于Java,您可能希望能够
waitFor()
在你开始的过程中。
man screen
:
-d -m
以“分离”模式启动屏幕。这会创建一个新会话,但不会附加到该会话。这对于系统启动脚本很有用。
-D -m
具有2个虚拟长时间运行命令的示例:
% screen -dmS app-top top
% screen -dmS app-foo bash -c "while sleep 1; do date; done"
% screen -ls
There are screens on:
25377.app-foo (08/30/2017 09:26:24 AM) (Detached)
24977.app-top (08/30/2017 09:23:41 AM) (Detached)
过程树:
SCREEN -dmS app-foo bash -c while sleep 1; do date; done
\_ bash -c while sleep 1; do date; done
\_ sleep 1
SCREEN -dmS app-top top
\_ top
private Process runInScreen(String sessionName, String command) throws IOException {
return new ProcessBuilder("screen", "-DmS", sessionName, "bash", "-c", command).inheritIO().start();
}