断开连接后保持SSH会话运行

时间:2015-10-09 15:18:49

标签: linux shell terminal

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

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

  

my matlab session

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

问题是,这个shell不再是交互式的。我不能再进入了 命令,也就是说,我无法输入nohup来保持我的SSH 会议活着。

1 个答案:

答案 0 :(得分:0)

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

  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来转到行的开头。< / p>

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