Правильный метод использования 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 перед каждой записью в файле такой as:

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

или как? Если я помещаю его только в сценарий, возможно ли, что один из вызовов python все еще может завершиться сбоем в сигнале завершения? Какова наилучшая практика и какое решение будет соответствовать моим требованиям? Есть ли лучшая альтернатива?

5
задан Dave Johnshon
источник

1 ответов

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

1. Пишите filebuilder.sh сказать

    exec nohup name_of_the_real_filebuilder.sh

2. Поставь

    trap "" 1

в начале вашего скрипта.  (1-числовое значение " зависания" сигнал.)

0
отвечен Scott 2012-10-23 23:29:59
источник

Другие вопросы bash linux nohup script shell