我正在尝试编写一个 shell 脚本,该脚本在远程服务器上执行冗长的批处理作业。我将通过 SSH 运行脚本。
问题是,我打算晚上开始写剧本,第二天早上收集结果;我不希望我的本地计算机必须整夜运行,因为它不需要作为批处理过程的一部分。因此,有没有办法可以关闭 SSH 连接并仍然让 shell 脚本继续在远程服务器上运行?
一种方法是使用 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
命令终止(或直到您的程序退出)。
是的,如果你启动脚本在后台运行,它会继续运行。或者,您可以使用命令行上的命令启动脚本。例如,你可以说:
ssh hostname -l loginname command
Run Code Online (Sandbox Code Playgroud)
那会起作用的。