我使用VPN隧道连接到我的工作网络,然后使用SSH连接到运行cygwin的工作PC。登录后,我可以附加到屏幕会话,一切都很好。
现在,过了一会儿,我离开了我的电脑,迟早,VPN隧道超时了。每一端的SSH连接最终会超时,然后我最终回到我的计算机上做一些工作。从理论上讲,这应该只是重新启动VPN,通过SSH重新连接,然后运行“screen -r -d”。
然而,显然当sshd守护进程在cygwin PC上超时时,它会使屏幕会话处于某种挂起状态。我可以通过在运行屏幕会话时单击cygwin bash shell窗口上的关闭框来重现类似的挂起状态。
一旦发生这种情况,有没有办法让屏幕会话恢复,这样我就不会丢失任何东西?
答案 0 :(得分:5)
通过大量实验,我能够按如下方式恢复屏幕会话:
答案 1 :(得分:3)
screen
阻塞(死)SSH会话的pty。通过查杀sshd
来恢复。
假设Linux,并且您目前不在屏幕内:
$ pgrep -U $UID sshd | xargs -rn1 pstree -hp sshd(16305)───bash(16306)───screen(16670) sshd(16544)───bash(16545)───xargs(16705)───pstree(16707) $ kill 16305 $ screen -r