现在我再次登录并想要恢复会话。
列出屏幕时,我会看到以下内容: />
我似乎一次连接到两个屏幕。
现在我想恢复之前运行的会话,以查看脚本的结果:
$ screen -ls
There are screens on:
30608.pts-8.myserver (11/03/2015 08:47:58 AM) (Attached)
21168.pts-0.myserver (11/03/2015 05:29:24 AM) (Attached)
7006.pts-4.myserver (10/23/2015 09:05:45 AM) (Detached)
18228.pts-4.myserver (10/21/2015 07:50:49 AM) (Detached)
17849.pts-0.myserver (10/21/2015 07:43:53 AM) (Detached)
5 Sockets in /var/run/screen/S-me.
为什么我不能重新连接?
我在另一个屏幕上也遇到相同的问题: br />
#1 楼
该会话仍附加在另一个终端上。服务器尚未在该连接上检测到网络中断:它仅在尝试发送数据包时检测到中断,并在超时后返回错误或无响应,但这尚未发生。在一种常见的情况下,客户端检测到中断是因为客户端试图发送一些输入而失败,但是服务器只是坐在那里等待输入。最终,服务器将发送一个保持活动的数据包并检测到连接已死。同时,使用
-d
选项将屏幕会话与其所在的终端分离。screen -r -d 30608
screen -rd
几乎是附加到现有屏幕会话的标准方法。#2 楼
根据手册,您只能“恢复”分离的屏幕:'
-ls
[match]''
-list
[match]'不要启动屏幕,而是打印会话标识字符串的列表(通常为pid.tty.host形式;请参阅会话名称)。标记为“已分离”的会话可以使用
screen -r
恢复。那些标记为“已连接”的设备正在运行并具有控制终端。如果会话以多用户模式运行,则标记为“多”。标记为“无法访问”的会话位于其他主机上,或者已死。如果无法访问的会话的名称与本地主机的名称或指定的参数(如果有)匹配,则认为该会话无效。有关如何构造匹配项的说明,请参见-r
标志。标记为“已死”的会话应彻底检查并删除。如果不确定,请询问系统管理员。使用“ -wipe
”选项删除会话。 您想要的选项是:
'
-x
'附加到已附加在其他位置的会话(显示模式)。屏幕拒绝从自身内部附着。但是,当级联多个屏幕时,不会检测到循环。照顾自己。
评论
使用-x,会话仍将“附加”。要完全接管会话,应将-d | -D(分离选项)与-r | -R(重新连接选项)一起使用。
–安德鲁·科兹洛夫(Andrew Kozlov)
2015年11月3日,9:37
这是一种替代方法,但可能不是OP所需要的。我经常从多个位置挂靠。
–托马斯·迪基(Thomas Dickey)
2015年11月3日,9:40
#3 楼
我将屏幕附加到选项-rD
来自手册:
-D -r
Reattach a session. If necessary detach and logout remotely first.
评论
要附加到现有的屏幕会话,它是屏幕-x,屏幕-rd是要在将它与所连接的每个终端分离之后附加到它。对于OP,我同意后者可能是首选,但在一般情况下,不一定。我通常使用-xR进行附加或创建,如果没有附加内容。
–StéphaneChazelas
2015年11月7日在21:56