Linux:一旦进程结束就终止屏幕

hex*_*ide 0 bash gnu-screen

现在我正在 GNU 屏幕中运行一个进程。屏幕以命令开头,screen -dmS screenname附加以screen -r screenname. 一个进程在 screen 会话中启动,并在一段时间后被终止。

当里面的进程结束时,我如何让屏幕终止?

注意:我不喜欢循环,所以我正在寻找替代方法。有时我会以一个& exit跟随它的方式开始这个过程,但是如果我kill -9 pid在这个过程中使用它就永远不会执行。

Rya*_*son 5

尝试这个:

screen -dmS screenname sleep 5
sleep 3
screen -ls
sleep 3
screen -ls
Run Code Online (Sandbox Code Playgroud)

首先screen -ls,您应该看到您的屏幕会话。在第二个,它应该消失。当最后一个窗口关闭时,屏幕将自动退出。由于您只在 screen 内运行一个程序,因此 screen 会话中的最后一个(也是唯一一个)窗口将在程序退出时关闭。如果您通过附加到 screen 会话启动程序,然后在 screen 会话内的 shell 提示符下键入命令,则 screen 正在等待您的 shell 退出。您可以在程序结束时通过键入exec PROGRAM而不是仅PROGRAM在 shell 提示符下键入来导致这种情况发生(实际上这将退出 shell 并将其替换为PROGRAM)。

如果您只需要屏幕的分离能力而不是其他任何东西,那么轻量级的替代方案是dtach