Ssh
SSH 連接斷開後無法重新連接到螢幕會話
我之前已經重新連接到一個長時間執行的螢幕會話
screen -dr control
。但是,有時此命令不會重新連接到螢幕,而是永遠掛起(10 多分鐘後我中止了)。這僅在 SSH 連接意外斷開時發生,而不是在螢幕正確分離時發生Ctrl-A d
。其他開關,如screen -x
或screen -D -RR
也不起作用。這篇文章建議殺死持有螢幕會話的 PTY,這將導致螢幕完成斷開連接。但是,它只是殺死了
screen -dr control
呼叫它的 shell。例如:
$ 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
連結的文章建議殺死PID 7109的
bash
程序。這也會殺死screen -dr control
PID 7387的程序。之後,我仍然無法連接到螢幕。
SCREEN -S control
啟動螢幕會話的程序init
作為它的父程序,我顯然無法殺死它。有沒有辦法重新連接到掛屏會話?
更新:這發生在使用核心 2.6.32-358.6.1.el6.x86_64 的 CentOS 6.4 上。這些外殼都是 bash 版本 4.1.2(1)-release。
正如 Jens Timmerman 所建議的,這種奇怪行為的最終原因是我使用 SSH ProxyCommand 和
ncat
. 在中間機器上殺死之後ncat
,我可以重新連接到螢幕會話。
我覺得你應該試試
screen -DR
下一次也是 - 憤怒的(大寫)呼叫應該強制它斷開中間 netcat 躍點持有的其他會話。