在批处理脚本中使用 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 是“挂断”信号的数值。)