нужно проверить, закончено ли выполнение нескольких пидов - PullRequest
0 голосов
/ 31 октября 2018
pid_list="21232 21231 43432" # same can be put in an array as well

Я запускаю несколько команд в фоновом режиме и получаю свои pids с помощью $ i. Как я могу проверить, закончен ли он или нет.

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Существует способ запросить ps для получения информации о конкретном PID или списке PID.

Это должно сработать в вашем случае. Если эта команда возвращает что-либо отличное от нуля, то хотя бы один из PID в списке все еще активен / не завершен.

ps -p $(echo ${pid_list} | sed 's/\ /,/g') | tail -n +2 | wc -l

Пояснение:

  • ps -p принимает список идентификаторов PID, разделенных запятыми, для получения информации.
  • sed 's/\ /,/g' заменяет разделители пробелами на запятые
  • tail -n +2 удаляет первую строку в выводе, которые являются только заголовками
  • wc -l считает количество возвращаемых строк.
0 голосов
/ 31 октября 2018

Попробуйте это:

ps -ef | egrep $(echo $pid_list | sed 's/ /|/g') | grep -v grep | wc -l

Если вывод равен 0, это означает, что процессы завершены.

...