как запрограммировать ожидание и продолжить в этом скрипте bash - PullRequest
2 голосов
/ 04 ноября 2011

У меня есть два сценария оболочки, скажем, A и B. Мне нужно запустить A в фоновом режиме и запустить B на переднем плане, пока A не завершит свое выполнение в фоновом режиме.Мне нужно повторить этот процесс для нескольких запусков, поэтому, как только А завершится, мне нужно приостановить текущую итерацию и перейти к следующей итерации.

Грубая идея такова:использовать 'wait' и 'continue', чтобы B работал столько раз, пока A находится в фоновом режиме, а весь процесс переходит к следующей итерации, когда A завершает

Ответы [ 2 ]

3 голосов
/ 04 ноября 2011

Использовать PID текущего фонового процесса:

./A.sh &
while ps -p $! >/dev/null; do
    ./B.sh
done
1 голос
/ 05 ноября 2011

Я просто перевожу вашу грубую идею в скрипты bash.Основная идея реализации механизма ожидания-продолжения (while ps -p $A_PID >/dev/null; do...) взята из @thiton, который ранее опубликовал ответ на ваш вопрос.

for i in `seq 0 10`
do
  ./A.sh &
  A_PID=$!
  for i in `seq 0 $C_MAX`
  do
    ./B.sh
  done
  while ps -p $A_PID >/dev/null; do
      sleep 1
  done
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...