2

Что было бы лучшим методом использования 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 ответ1

0

Размещение nohup в каждой строке не является ответом.  Если вы сделаете это, и сеанс будет завершен, запущенная в настоящий момент программа будет выполнена до конца, но затем сценарий завершится без завершения. nohup filebuilder.sh будет работать, но тогда вы должны помнить, чтобы делать это каждый раз.  Пара решений:

  1. Напишите filebuilder.sh чтобы сказать

    exec nohup name_of_the_real_filebuilder.sh

  2. Положил

    trap "" 1

в начале вашего сценария. (1 - это числовое значение сигнала «зависания».)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .