我有一个远程 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 链接:屏幕:尽管连接断开,但仍保持进程运行
screen
确实很棒。另外几个选项是at
和nohup
:
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)