【问题标题】:Keep SSH Sessions running after disconnection断开连接后保持 SSH 会话运行
【发布时间】:2015-10-09 15:18:48
【问题描述】:

我正在使用我的笔记本电脑通过 shell 终端登录学校的服务器以运行 Matlab 会话。会议大约需要 10 个小时,我想关闭我的 笔记本电脑,回家,吃晚饭,重新启动shell终端检查 我的 Matlab 会话的进度。

来自this link 我知道我应该使用 nohup nohup 来保持我的终端活着, 但我遇到了以下问题。这是我开始后shell的屏幕截图 运行 Matlab 会话:

a = cv000_29590 是来自 Matlab 的响应。它应该继续运行 直到cv999999,大约需要 10 个小时。

问题是,这个 shell 不再是交互式的了。我不能再进入 命令,也就是我无处可输入nohup 推荐保存我的SSH 会话活动。

【问题讨论】:

  • GNU Screentmux
  • 运行screen 然后开始你的进程。按 ctrl+a、ctrl+d,然后注销。稍后,登录并输入screen -r
  • @ChrisLear 真棒!!!非常感谢!!
  • Keep SSH session alive的可能重复

标签: linux shell terminal


【解决方案1】:

在您已经开始会话之后,这实际上是不可能的。但对于新会话,您可以执行以下操作:

  1. 将以下内容添加到您的.bash_profile 顶部:

    if [ -z "${PS1}" ] ; then
        return
    fi
    
    if [ "${TERM}" != "screen" ] ; then
        export HOSTNAME
        exec screen -xRR
    fi
    
    function new {
        u=${1:-$USER}
        test ${u} = ${USER} && screen -t ${u}@${HOSTNAME} || screen -t ${u}@${HOSTNAME} su --login ${u}
    }
    
  2. 将以下内容放入.screenrc

    escape ^bb
    shell -$SHELL
    termcapinfo xterm ti@:te@
    hardstatus lastline "%-Lw[%n%f %t]%+Lw%<"
    screen -t ${USER}@${HOSTNAME}
    

    这些大多是我自己对屏幕的自定义。其中最重要的是我将屏幕转义字符设置为CTRL-b,而不是默认的CTRL-a,这样我仍然可以在bash 中使用CTRL-a 转到行首。

  3. 使用 CTRL-b c 在新窗口中创建 shell(或者在 bash 提示符下输入 new 以使用该功能)。并使用CTRL-b d 分离您的会话并使其继续运行。下次登录时,您将重新连接到您的会话,一切都将保持原样。使用CTRL-b n 循环浏览您创建的窗口。如果您不想使用多个窗口,则不必这样做,只需使用使会话保持运行并稍后重新连接的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2021-07-16
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多