如何从远程计算机使用 SSH 运行脚本并避免远程计算机脱机时中断

Bar*_*nka 3 bash ssh

我有一个远程 Linux 服务器,我用它来运行一些使用 SSH 的非常长的任务。它工作得很好,但是,当然,如果由于某种原因连接断开,任务就会终止。

具体来说,我正在运行这样的东西:

[myName@localStation]$ ssh john_doe@myRemoteServer
Password: *****
[john_doe@remoteServer]$ ./myVeryLongTask.script > myOutputLog.txt
Run Code Online (Sandbox Code Playgroud)

有没有办法调整 SSH 连接,如果网络连接失败,任务会继续运行?

小智 5

您需要阅读屏幕命令(这是一个快速的谷歌结果

Screen 允许您让远程连接保持运行状态,然后出于与您描述的完全相同的原因返回该连接。它对于运行无人值守的作业或无限期地保持会话打开也很有用。

“人屏”了解更多信息

编辑:这是一个更好的 HOWTO 链接:屏幕:尽管连接断开,但仍保持进程运行


ter*_*don 5

screen确实很棒。另外几个选项是atnohup

  • at

    at, - 排队、检查或删除作业以供以后执行

    您可以使用at的交互式 shell 来启动命令或将它们保存在文本文件中并将其传递给 at:

    $ cat foo
    ./myVeryLongTask.script > myOutputLog.txt 
    $ at now < foo
    
    Run Code Online (Sandbox Code Playgroud)
  • nohup

    nohup - 运行一个不受挂断影响的命令,输出到非 tty

    要启动命令,请执行

    $nohup ./myVeryLongTask.script > myOutputLog.txt 
    
    Run Code Online (Sandbox Code Playgroud)