Правильный метод использования 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 name_of_the_real_filebuilder.sh
2. Положите
ловушка "" 1
в начале вашего сценария. (1 - это числовое значение сигнала "зависания".)