【问题标题】:re-initialize / reconnect a terminal after network interruption网络中断后重新初始化/重新连接终端
【发布时间】:2010-11-04 15:16:54
【问题描述】:

我有一个可能是一个非常简单的终端相关问题。 我正在使用 Gnome 运行 Ubuntu 8.10 Intrepid Ibex,并且我经常打开一个基于终端的 ssh 会话只是让它在稍后的某个时候删除。一旦会话被删除 终端无法使用,显然是因为网络连接已断开。

有没有办法重新初始化会话,甚至恢复到正常工作的本地终端?

在 Windows 下,使用 putty,当发生这种情况时,我可以右键单击并选择重新启动会话, 并且不需要打开一个新终端,但是在linux下我对此缺乏了解 主题导致我总是关闭已失效的终端,然后从头开始重新启动一个新终端。 如果有的话,我想学习一个新的有用的技巧。

另外,我发现以下帖子的措辞与我的非常相似,

Automatically (or more easily) reconnect to a screen session after network interruption 在网络中断后重新连接到屏幕会话

但是,据我所知,这是一个不同的话题。

【问题讨论】:

    标签: linux session ssh terminal


    【解决方案1】:

    You want to use your SSH escape。默认情况下它是“~”和~。将终止您的连接。

    您链接到的问题是关于屏幕的,一旦您使用转义字符终止本地 ssh 进程并重新连接,这对于恢复远程会话很有用。

    【讨论】:

    • 感谢链接和概要。这似乎正是我想要的。另外,虽然设置了默认值,但我需要在我的 ssh 设置中取消注释它,然后运行 ​​
       /etc/init.d/ssh restart 
    • 我喜欢用~^Z,后面跟着kill %,但结果差不多。如果您的网络连接不佳,您可能希望确保您的 ssh 配置启用了 keepalive(定期发送额外的数据包以验证连接是否仍然可用)。
    【解决方案2】:

    首先使用~. 在本地断开您的 ssh 连接。这会让您回到正常工作的本地终端。您也可以使用另一个终端来终止相应的 ssh 命令。

    为了保持您的远程状态,您应该按照之前的建议使用screen

    我最近发现了mosh,这是一个有趣的基于 UDP 的可恢复 shell 客户端。它使用 ssh 来初始化连接,并且可能需要在服务器上安装 mosh(以及客户端和服务器之间的 UDP 访问),但是它可以从客户端的断开连接和 IP 更改中恢复。

    【讨论】:

      【解决方案3】:

      要让您的本地终端再次可用,您可以使用 reset 命令。

      要在虚拟终端中运行命令,您可以使用 screentmux 附加/分离。 screen 的典型用法:

      $ screen -S somename
      screen$ some-console-command
      ...
      ^ad
      

      你可以通过输入 ctrl+a 然后 d 来脱离屏幕

      然后你可以列出会话并附加到它

      $ screen -ls
      $ screen -dr somename
      screen$
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多