SSH 连接断开后无法重新连接到屏幕会话

Vik*_*eld 16 ssh gnu-screen

我之前曾使用screen -dr control. 但是,有时此命令不会重新附加到屏幕,而是永远挂起(10 分钟后我中止)。这仅在 SSH 连接意外断开时发生,而不是在屏幕与Ctrl-A d. 其他开关,如screen -xscreen -D -RR也不起作用。

这篇文章建议杀死持有 screen 会话的 PTY,这将导致 screen 完成其断开连接。但是,它只是杀死从中screen -dr control调用的外壳。

例如:

$ ps -ef | grep control | grep -v grep
nomad     7387  7109  0 13:05 pts/50   00:00:00 screen -dr control
nomad    15299     1  0 Nov27 ?        00:13:47 SCREEN -S control

$ ps -ef | grep bash | grep 'pts/50'
nomad     7109  7108  0 12:49 pts/50   00:00:00 -bash
Run Code Online (Sandbox Code Playgroud)

链接的帖子建议杀死bashPID 7109的进程。这也会杀死screen -dr controlPID 7387的进程。之后,我仍然无法连接到屏幕。

SCREEN -S control启动屏幕会话的进程init作为其父进程,我显然无法杀死它。

有没有办法重新附加到挂屏会话?

更新:这发生在使用内核 2.6.32-358.6.1.el6.x86_64 的 CentOS 6.4 上。外壳都是 bash 版本 4.1.2(1)-release。

pac*_*ist 5

我觉得你应该试试

screen -DR 
Run Code Online (Sandbox Code Playgroud)

下次也是 - 愤怒(大写)调用应该强制它断开由中间 netcat 跃点保持的其他会话。


Vik*_*eld 1

正如 Jens Timmerman 所建议的,这种奇怪行为的最终原因是我使用 SSH ProxyCommand 和ncat. 在中间机器上终止后ncat,我可以重新连接到屏幕会话。