失去 SSH 连接后,如何防止 gnu screen 无响应?

失去 SSH 连接后,如何防止 gnu screen 无响应?

我使用 VPN 隧道连接到我的工作网络,然后使用 SSH 连接到运行 cygwin 的工作电脑。登录后,我可以连接到屏幕会话,一切正常。

现在,过了一会儿,我离开电脑,VPN 隧道迟早会超时。两端的 SSH 连接最终都会超时,然后我最终回到电脑前做一些工作。理论上,这应该很简单,只需重新启动 VPN,通过 SSH 重新连接,然后运行“screen -r -d”即可。

但是,显然当 sshd 守护进程在 cygwin PC 上超时时,它会使屏幕会话处于某种挂起状态。我可以通过单击 cygwin bash shell 窗口上的关闭框来重现类似的挂起状态,当它正在运行屏幕会话时。

一旦发生这种情况,有什么方法可以让屏幕会话恢复,这样我就不会丢失任何东西?

答案1

经过大量实验,我能够按照如下方式恢复屏幕会话:

  1. 查找服务器屏幕进程的 PID:ps | grep screen
  2. 向服务器发送 HUP 信号:kill -1 <PID>
  3. 运行屏幕客户端:screen -r -d

相关内容