我正在尝试编写一个 shell 脚本,在远程服务器上执行冗长的批处理作业。我将通过 SSH 运行该脚本。
问题是,我打算在晚上开始编写脚本,并在第二天早上收集结果;我不想让我的本地计算机整夜运行,因为批处理过程中不需要它。因此,有没有办法可以关闭 SSH 连接并仍然让 shell 脚本继续在远程服务器上运行?
答案1
一种方法是使用 nohup。这是一个例子:
nohup your_prog.sh &
your_prog.sh
这将运行在后台调用的程序,&
并将所有输出重定向到名为nohup.out
.
现在,您可以使用以下命令监视在后台运行的程序的输出:
tail -f nohup.out
使用该命令启动的程序nohup
将继续运行,直到被重新启动或显式kill
命令终止(或直到程序退出)。
答案2
是的,如果你启动脚本在后台运行,它会继续运行。或者,您可以使用命令行上的命令启动脚本。例如,你可以说:
ssh hostname -l loginname command
那会起作用的。