Назад | Перейти на главную страницу

«Потоки» в сценариях оболочки

У меня ситуация, когда мне нужно:

  1. Сделайте некоторую настройку преамбулы в скрипте A
  2. Запускайте скрипты B, C, D и E вместе, чтобы они выполнялись одновременно
  3. Когда все четыре сценария завершились, выполните некоторую очистку в сценарии A.

На данный момент я запустил флаги в сценариях B - D, которые устанавливают, выполняется ли сценарий по-прежнему, и после запуска четырех сценариев сценарий A находится в цикле ожидания, проверяя эти файлы флагов.

Есть лучший способ сделать это?

Фон состоит в том, что это сценарий резервного копирования для сервера AIX, использующий моментальные снимки - сценарий A берет моментальные снимки JFS2 в файловых системах, которые мы хотим создать резервную копию (все они должны быть выполнены одновременно, поскольку у нас есть связанные данные, распределенные по разным файловым системам. - это не может быть изменено), сценарии B - D выполняют фактическое резервное копирование этих файловых систем из моментальных снимков (три rsync на другой сервер и одно резервное копирование на ленту), а затем сценарий A удаляет моментальные снимки после того, как все копии файлов (включая лента) завершены.

С помощью bash вы можете сделать это:

init # do the preamble setup of script A

scriptB & # start in background
scriptC & # start in background
scriptD & # start in background

wait # wait for all background jobs to finish

cleanup # do the cleanup part of script A