Усі ці рішення перевірені в Ubuntu 14.04:
Рішення 1 (за допомогою команди ps):
Я просто запропонував би відповідь на відповідь П'єра:
while ps axg | grep -vw grep | grep -w process_name > /dev/null; do sleep 1; done
У цьому випадку grep -vw grep
переконайтеся, що grep відповідає лише імені_процесу, а не самій програші. Він має перевагу в підтримці випадків, коли ім'я_процесу не знаходиться в кінці рядка вps axg
.
Рішення 2 (використовуючи верхню команду та ім'я процесу):
while [[ $(awk '$12=="process_name" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
Замініть process_name
ім'я процесу, яке відображається вtop -n 1 -b
. Будь ласка, зберігайте лапки.
Щоб переглянути список процесів, які ви чекаєте їх завершення, ви можете запустити:
while : ; do p=$(awk '$12=="process_name" {print $0}' <(top -n 1 -b)); [[ $b ]] || break; echo $p; sleep 1; done
Рішення 3 (використовуючи верхню команду та ідентифікатор процесу):
while [[ $(awk '$1=="process_id" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
Замініть process_id
ідентифікатор процесу вашої програми.