如何恢复无法分离的屏幕?

Edu*_*scu 9 command-line gnu-screen terminal-multiplexer

我使用屏幕Screen 视觉控制台。要分离屏幕,我需要按Ctrl+A然后按,D但有时会关闭会话而不分离它。它出现(Attached)screen -list

eduard@eduard-X:~$ screen -list
There are screens on:
        4561.pts-46.eduard-X   (30.03.2015 14:48:51)   (Attached)
        4547.pts-46.eduard-X   (30.03.2015 14:48:33)   (Detached)
        4329.pts-41.eduard-X   (30.03.2015 14:46:28)   (Attached)
        3995.pts-30.eduard-X   (30.03.2015 14:30:01)   (Detached)
Run Code Online (Sandbox Code Playgroud)

如果我尝试恢复它,屏幕会响应没有屏幕可以恢复:

eduard@eduard-X:~$ screen -r 4329
There is a screen on:
        4329.pts-41.eduard-X   (30.03.2015 14:46:28)   (Attached)
There is no screen to be resumed matching 4329.
Run Code Online (Sandbox Code Playgroud)

我还可以恢复未正确分离的屏幕吗?

Cel*_*ada 13

当然,与

screen -d -r
Run Code Online (Sandbox Code Playgroud)

您可以选择其中分离并通过查找PID(或全名)与重新安装照常屏幕screen -list

screen -d -r 12345
Run Code Online (Sandbox Code Playgroud)


小智 8

您应该创建带有名称的屏幕。

$ screen -S foo

$ screen -list
There are screens on:
        16994.foo       (03/30/15 14:05:13)     (Detached)
        20082.q (12/17/14 18:06:44)     (Detached)
        11008.w (11/12/14 10:52:43)     (Detached)
        1199.irc        (11/12/14 01:34:40)     (Detached)
Run Code Online (Sandbox Code Playgroud)

然后你可以重新连接屏幕

$ screen -dr foo
Run Code Online (Sandbox Code Playgroud)

(将附加到 16994.foo,分离任何其他进程)或

$ screen -x i
Run Code Online (Sandbox Code Playgroud)

(它将附加到 1999.irc,它将与另一个进程共享屏幕)

我觉得命名屏幕很重要。


Edu*_*scu 6

按照我使用的帖子中建议的评论:

screen -x <session id>
Run Code Online (Sandbox Code Playgroud)

从手册页: screen -x

-x 附加到未分离的屏幕会话。(多显示模式)。屏幕拒绝从自身内部附着。 但是在级联多个屏幕时,没有检测到循环;小心。

还研究了一下我发现了这个选项的其他用途,使用屏幕进行远程交互 解释说您可以从多个终端连接,一种远程控制台共享系统,实际上您可以在共享环境中远程查看和键入。

这可以在教学生或与同事一起设置时使用。

您可以尝试从两个具有相同屏幕 ID 的不同终端连接到同一屏幕。( screen -x 4329)。您在一个中输入的内容可以在另一个中看到,反之亦然。