如果 SSH 实例关闭,在 ssh 中运行的 shell 脚本能否继续运行?

SoI*_*ins 5 ssh remote logout

我正在尝试编写一个 shell 脚本,该脚本在远程服务器上执行冗长的批处理作业。我将通过 SSH 运行脚本。

问题是,我打算晚上开始写剧本,第二天早上收集结果;我不希望我的本地计算机必须整夜运行,因为它不需要作为批处理过程的一部分。因此,有没有办法可以关闭 SSH 连接并仍然让 shell 脚本继续在远程服务器上运行?

use*_*540 5

一种方法是使用 nohup。下面是一个例子:

nohup your_prog.sh &
Run Code Online (Sandbox Code Playgroud)

这将运行your_prog.sh在后台调用的程序&,并将所有输出重定向到名为nohup.out.

现在,您可以使用以下命令来监视在后台运行的程序的输出:

tail -f nohup.out
Run Code Online (Sandbox Code Playgroud)

使用该nohup命令启动的程序将继续运行,直到被重新启动或显式kill命令终止(或直到您的程序退出)。


unx*_*nut 3

是的,如果你启动脚本在后台运行,它会继续运行。或者,您可以使用命令行上的命令启动脚本。例如,你可以说:

ssh hostname -l loginname command
Run Code Online (Sandbox Code Playgroud)

那会起作用的。