我希望能够通过 ssh 连接到系统并运行一个 shell,如果我的网络中断,该 shell 将会持续存在。通常的答案是运行 screen 或 tmux,然后重新连接到断开连接的会话。这两个程序基本上都运行自己的终端仿真器,因此如果您在 mate-terminal 或 xfce4-terminal 之类的程序中运行它,则无法使用常规滚动方法向后滚动窗口。我正在寻找可以执行类似于其断开连接的会话代码的操作的东西,但这只完成了所需的最低限度。
例如,我设想了这样一种情况,您可以 ssh 进入系统并启动此程序。它会在 pty 后面运行您的 shell(我认为 screen 就是这样做的),并会首先输出一些内容来标识会话名称。如果您的网络连接断开,您可以 ssh 重新登录,然后运行该程序,并选择一个选项告诉它重新连接到该会话。基本上,就像 screen 一样,但没有随之而来的所有其他东西。
我读过有关 mosh 的文章,但如果它通过像 ssh 这样的加密通道运行,除了初始连接之外,我还没有注意到。
答案1
我不知道是否有一个“精简版”的 tmux/screen 可以实现你所描述的功能,但编写一个可能不难,而且可能存在。
但是,您可以获得想要的结果并继续使用正常屏幕。您可以通过禁用 termcap 功能来实现这一点,该功能可防止图形终端累积回滚数据。
添加以下行来.screenrc
执行此操作:
termcapinfo xterm* ti@:te@
我不确定 tmux 的等效物是什么,但是可能非常相似。
您必须启动一个新的屏幕会话才能使其生效。