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

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

现在我正在 GNU screen 中运行一个进程。Screen 使用命令screen -dmS screenname和附加的启动screen -r screenname。进程在 screen 会话中启动,并在一段时间后被终止。

当内部进程结束后,如何让屏幕终止?

注意:我不喜欢循环,所以我正在寻找替代方案。有时我会在流程开始时使用后面的 ,但如果我在流程上& exit使用,则永远不会执行。kill -9 pid

答案1

以 启动该进程exec,因此它将是屏幕内唯一的东西(它完成后会替换 shell 而不是返回到 shell)。

答案2

尝试这个:

screen -dmS screenname sleep 5
sleep 3
screen -ls
sleep 3
screen -ls

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

如果你只需要屏幕的可拆卸功能,那么一个轻量级的替代方案是德塔赫

答案3

您可以使用命令名称启动屏幕会话,例如screen -dmS session vim将打开一个使用 vim 退出的屏幕会话。在现有的屏幕会话中,您可以使用它exec来获得相同的效果:。

相关内容