如何恢复“丢失”的屏幕会话?

Fra*_*ter 86 gnu-screen terminal

不知何故,我设法关闭了一个屏幕窗口而没有屏幕“注意到”它,所以会话仍然被标记为attached. 这会阻止我重新连接到此会话。我能做什么?

me@iupr-serv8:~$ screen -r
There are several suitable screens on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:34 PM)    (Attached)
    24658.pts-19.XXX-serv8  (01/05/2012 07:11:38 PM)    (Detached)
    24509.pts-19.XXX-serv8  (01/05/2012 07:10:00 PM)    (Detached)
    18676.pts-5.XXX-serv8   (01/02/2012 06:55:33 PM)    (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
me@XXX-serv8:~$ screen -r 25028
There is a screen on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:33 PM)    (Attached)
There is no screen to be resumed matching 25028.
Run Code Online (Sandbox Code Playgroud)

[更新]

最后我发现,会话并没有丢失,而是第一个会话的ID是0. 第二个会话具有 ID 1

ang*_*gus 117

尝试先用 分离它screen -d。如果这不起作用,您可以尝试按强调的顺序增加,

   -d|-D [pid.tty.host]
        does  not  start screen, but detaches the elsewhere running screen session. It has the
        same effect as typing "C-a d" from screen's controlling terminal. -D is the equivalent
        to  the  power  detach key.  If no session can be detached, this option is ignored. In
        combination with the -r/-R option more powerful effects can be achieved:

   -d -r   Reattach a session and if necessary detach it first.

   -d -R   Reattach a session and if necessary detach or even create it first.

   -d -RR  Reattach a session and if necessary detach or create it. Use the first  session  if
           more than one session is available.

   -D -r   Reattach a session. If necessary detach and logout remotely first.

   -D -R   Attach  here and now. In detail this means: If a session is running, then reattach.
           If necessary detach and logout remotely first.  If it was not running create it and
           notify the user. This is the author's favorite.

   -D -RR  Attach here and now. Whatever that means, just do it.
Run Code Online (Sandbox Code Playgroud)

  • `-d -r` 选项一起将强制附加该会话。 (11认同)

小智 7

screen -r '1234.somescreensession'
Run Code Online (Sandbox Code Playgroud)

有一个屏幕:

1234.somescreensession(附)

没有与 1234.somescreensession 匹配的要恢复的屏幕。

这是收回该屏幕会话的简单方法。

screen -D -r '1234.somescreensession'
Run Code Online (Sandbox Code Playgroud)


el_*_*dor 5

Write Failed: broken pipe当我附加了一个屏幕会话时,我的 ssh 连接意外关闭并显示消息后,我遇到了同样的问题。但是,我无法使用上述任何命令重新附加我的屏幕会话。请注意,我使用以下版本:

~> screen --version
Screen version 4.00.03 (FAU) 23-Oct-06
Run Code Online (Sandbox Code Playgroud)

显然,仍然有一个sshd运行实例,这使我无法分离和重新连接会话。在确定了PID和 的适当实例之后sshdkill我能够重新附加screen -r.


仅供参考:您肯定会发现不止一个sshd恶魔,一个对应于您当前的登录名,另一个对应于过时的screen会话(实际上,可能有多个其他sshds 正在运行,属于多个其他screens)。