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

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

我用的是屏幕屏幕视觉控制台。要分离屏幕,我需要按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)

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

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.

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

答案1

当然,与

screen -d -r

你可以选择哪个screen 通过查找带有 .screen 的 pid(或完整名称)来照常分离和重新连接screen -list

screen -d -r 12345

答案2

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

$ 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)

然后你可以重新连接屏幕

$ screen -dr foo

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

$ screen -x i

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

我觉得命名屏幕很重要。

答案3

根据我使用的帖子中建议的评论:

screen -x <session id>

从手册页:屏幕-x

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

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

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

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

相关内容