我之前曾使用screen -dr control. 但是,有时此命令不会重新附加到屏幕,而是永远挂起(10 分钟后我中止)。这仅在 SSH 连接意外断开时发生,而不是在屏幕与Ctrl-A d. 其他开关,如screen -x或screen -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。
我觉得你应该试试
screen -DR
Run Code Online (Sandbox Code Playgroud)
下次也是 - 愤怒(大写)调用应该强制它断开由中间 netcat 跃点保持的其他会话。
正如 Jens Timmerman 所建议的,这种奇怪行为的最终原因是我使用 SSH ProxyCommand 和ncat. 在中间机器上终止后ncat,我可以重新连接到屏幕会话。
| 归档时间: |
|
| 查看次数: |
4170 次 |
| 最近记录: |