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


80

我设法以某种方式关闭了一个屏幕窗口,而没有屏幕“注意到”它,因此会话仍标记为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.

[更新]

最后,我发现该会话没有丢失,但是第一个会话的ID为0。第二个会话具有ID 1

Answers:


108

尝试先使用分离它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.

11
所有-d -r选项将强制附加该会话。
肯尼迪

我经常使用,screen -x因此可以一次从多个位置附加。当然,如果您不小心关闭了窗口,-d -r则最好保持整洁。
mpontillo 2012年

5
screen -r '1234.somescreensession'

屏幕上显示:

1234.somescreensession(附加)

没有与1234.somescreensession相匹配的屏幕。

这是恢复该屏幕会话的一种简单方法。

screen -D -r '1234.somescreensession'

4

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

~> screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

显然,仍然有一个sshd正在运行的实例,这使我无法分离和重新连接会话。确定了PID的适当实例sshd并确定后kill,我可以重新附加它screen -r


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


我遇到了同样的问题
dianovich 2015年

3

有时,多个屏幕在后台运行。

可以通过以下方式恢复它们:

screen -r [pid]

要获取屏幕,请先运行screen -R,然后您将看到屏幕上所有正在运行的PID,然后按继续screen -r [pid]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.