Toutes ces solutions sont testées dans Ubuntu 14.04:
Solution 1 (en utilisant la commande ps):
Juste pour ajouter à la réponse de Pierz, je suggérerais:
while ps axg | grep -vw grep | grep -w process_name > /dev/null; do sleep 1; done
Dans ce cas, grep -vw grep
garantit que grep correspond uniquement à nom_processus et non à grep lui-même. Il a l'avantage de prendre en charge les cas où le process_name n'est pas à la fin d'une ligne à ps axg
.
Solution 2 (en utilisant la commande supérieure et le nom du processus):
while [[ $(awk '$12=="process_name" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
Remplacer process_name
par le nom du processus qui apparaît dans top -n 1 -b
. Veuillez conserver les guillemets.
Pour voir la liste des processus que vous attendez qu'ils soient terminés, vous pouvez exécuter:
while : ; do p=$(awk '$12=="process_name" {print $0}' <(top -n 1 -b)); [[ $b ]] || break; echo $p; sleep 1; done
Solution 3 (en utilisant la commande supérieure et l'ID de processus):
while [[ $(awk '$1=="process_id" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
Remplacez-le process_id
par l'ID de processus de votre programme.