批处理中使用 nohup 的正确方法

批处理中使用 nohup 的正确方法

在批处理脚本中使用 nohup 的最佳方法是什么,该脚本中有多个调用。

例如,我有一个名为 filebuilder.sh 的脚本,它包含以下内容:

/usr/bin/python buildFile.py fileA
/usr/bin/python buildFile.py fileB
/usr/bin/python buildFile.py fileC

我想要做的是确保如果我运行脚本,即使我的 SSH 会话终止,它也会继续运行。我是否应该像这样调用脚本:

nohup filebuilder.sh

或者将 nohup 放在文件中的每个条目之前,例如:

nohup /usr/bin/python buildFile.py fileA
nohup /usr/bin/python buildFile.py fileB
nohup /usr/bin/python buildFile.py fileC 

还是两者兼而有之?如果我只将其放在脚本上,其中一个 Python 调用是否仍有可能在终止信号上失败?最佳实践是什么,哪种解决方案可以满足我的要求?还有更好的选择吗?

答案1

把每一行都放nohup上去并不是答案。如果你这样做,并且会话终止,当前运行的程序将运行完成,但脚本将终止而不完成。  nohup filebuilder.sh会起作用,但你必须记住每次都这样做。有几个解决方案:

  1. 写信filebuilder.sh

    exec nohup 真实文件生成器名称.sh

  2. 放

    陷阱“”1

在脚本的开头。(1 是“挂断”信号的数值。)

相关内容