Правильний метод використання nohup в пакетному процесі


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 /usr/bin/python buildFile.py fileA
nohup /usr/bin/python buildFile.py fileB
nohup /usr/bin/python buildFile.py fileC 

Або обоє? Якщо я розміщую його лише на скрипті, чи можливо, що один із викликів python все ще може вийти з ладу на сигнал припинення? Яка найкраща практика та яке рішення відповідатиме моїм вимогам? Чи є краща альтернатива?

Відповіді:


0

Розміщення nohupкожного рядка - це не відповідь. Якщо ви це зробите, і сеанс припиняється, запущена в даний час програма запускається до завершення, але тоді сценарій припиняється без завершення.  nohup filebuilder.shбуде працювати, але тоді вам потрібно пам’ятати, що робити це кожен раз. Пара рішень:

  1. Напишіть, filebuilder.shщоб сказати

    exec nohup name_of_the_real_filebuilder.sh

  2. Покласти

    пастка "" 1

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


дякую за відповідь. Це чи є чи ситуація, чи те, чи ситуація для ваших рішень?
Дейв Джонсон

@Dave: або (1), або (2).
Скотт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.