Правильный метод использования 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 - это числовое значение сигнала "зависания".)

Другие вопросы по тегам