Нужно проверить, завершено ли выполнение нескольких pid

pid_list = "21232 21231 43432" # same can be put in an array as well

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

Обратите внимание, что если вы хотите дождаться завершения одного или всех этих pid, то проверка того, завершились ли они, не является правильным подходом.

that other guy 31.10.2018 06:20

Если это единственные процессы, которые вы запустили, вы можете просто использовать wait, чтобы дождаться их всех.

Mark Setchell 31.10.2018 08:51

Я проверяю это условие внутри цикла while, и если все pid завершены, он выйдет, иначе я использую sleep 1m, чтобы подождать минуту ... это будет продолжаться, пока загрузка не будет завершена

sporty 31.10.2018 11:08
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

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

Есть способ запросить 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 подсчитывает количество возвращаемых строк.

Другие вопросы по теме