在远程服务器上运行 shell 作业,关闭终端而不关闭作业

在远程服务器上运行 shell 作业,关闭终端而不关闭作业

我正在使用扭矩在远程服务器上运行作业。我目前有一个恼人的问题。

当我运行我的工作时,这就是我目前所做的:

  1. 通过 Teamviewer 登录另一台计算机
  2. 从该计算机ssh到远程服务器也是如此ssh [email protected]
  3. 在这里,我运行我的作业脚本sh verycomplicatedrunscript.sh,它向用户回显如下内容:

    I am now running job 1...

    I am now running job 2...

    I am now running job 3...

    I am now running job 4...

只是为了表明它正在运行以及它正在运行什么。

唯一的问题是,这需要几天的时间,因为工作量有点大,有数千个。

现在,我想绕过 Teamviewer 步骤,直接ssh从我自己的计算机进入远程。但如果我这样做,并运行我的作业脚本,然后关闭终端;它会杀死该进程(这就是为什么我目前在另一台计算机上运行它,我可以通过打开终端来让它运行几天)。

有什么方法可以在远程服务器上执行脚本,然后注销而不会终止我的作业脚本的执行?

谢谢

解决方案

我最终使用了这个screen选项,坦率地说,这真是太棒了。

我的工作现在正在运行

screen sh awesomejobscript.sh option1 option2 option3

答案1

只需使用 nohup 即可:

$ ssh [email protected] "nohup complexscript.sh > mylog 2>&1 &" 

答案2

事实证明,除了上述一种之外,还有很多解决方案;

screen sh jobscript.sh op1 op2 op3

效果也很好。

相关内容