2015-10-09 56 views
0

我正在通过shell终端使用我的笔记本电脑登录学校的服务器以运行 Matlab会话。会议将需要约10个小时,我想关闭我的 笔记本电脑,回家,吃晚饭,并重新聘请shell终端检查我的Matlab会话的进展。让SSH会话在断开连接后运行

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

my matlab session

其中a = cv000_29590是从MATLAB的响应。它应该继续运行 ,直到cv999999并花费大约10个小时。

问题是,这个shell不再是交互式的。我无法再输入 命令,也就是说,我没有在哪里输入nohup表示将我的SSH 会话保持在活动状态。

+2

'GNU Screen'或'tmux' –

+3

运行'screen'然后开始你的过程。按ctrl + a,ctrl + d,然后注销。稍后,登录并输入'screen -r'。 –

+0

@ChrisLear真棒!!!万分感谢!! – JumpJump

回答

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 [email protected]:[email protected] 
    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可循环显示您创建的窗口。如果您不想使用多个窗口,则不需要,只需使用以下功能即可让会话继续运行并在稍后重新连接。

相关问题