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

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

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

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

[myName@localStation]$ ssh john_doe@myRemoteServer
Password: *****
[john_doe@remoteServer]$ ./myVeryLongTask.script > myOutputLog.txt

有没有办法调整 SSH 连接,以便在网络连接失败时任务继续运行?

答案1

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

Screen 允许您保持远程连接运行并根据您所描述的原因返回该连接。它对于运行无人值守的作业或无限期地保持会话打开也很有用。

“男人屏幕”了解更多信息

编辑:这是一个更好的 HOWTO 链接:screen: 即使连接断开也能保持进程运行

答案2

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

  • at

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

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

    $ cat foo
    ./myVeryLongTask.script > myOutputLog.txt 
    $ at now < foo
    
  • nohup

    nohup - 运行不受挂起影响的命令,并将输出输出到非 tty

    要启动命令,请执行以下操作

    $nohup ./myVeryLongTask.script > myOutputLog.txt 
    

答案3

为了完整起见,分离是另一种选择。detach上面链接中的摘要:

dtach 是一个模拟屏幕分离功能的小程序,允许您在不受控制终端保护的环境中运行程序并稍后附加到它。

与 相比,它的尺寸更小,并且比或screen具有更多的功能。atnohup

相关内容