Исправление сценария оболочки перед запуском

Несколько моментов:

  • Если ваша цель с nohup - не допустить, чтобы удаленный выход оболочки убивал ваши рабочие процессы, вы следует использовать nohup в самом скрипте, а не в отдельных рабочих процессах, которые он создает.

  • Как объясняется здесь , nohup только предотвращает получение процессами SIGHUP и взаимодействие с терминалом, но не нарушает отношения между оболочкой и ее дочерними процессами.

  • В связи с вышеизложенным, с nohup или без него, простое ожидание между двумя циклами for вызовет второй for ] будет выполняться только после завершения всех дочерних процессов, запущенных первым для .

  • С простым ожиданием :

    ожидаются все активные в данный момент дочерние процессы, и статус возврата равен нулю.

  • Если вам нужно запустить второй для только в том случае, если в первом не было ошибок, тогда вам нужно сохранить каждый рабочий PID с помощью $! и передать их все wait :

     pids = 
    для ... 
    worker ... & 
    pids + = "$ ! "
    готово 
    подождите $ pids || {echo "были ошибки"> & 2; выход 1; } 
     

2
28.01.2016, 21:02
0 ответов

Теги

Похожие вопросы