Tutte queste soluzioni sono testate in Ubuntu 14.04:
Soluzione 1 (usando il comando ps):
solo per aggiungere alla risposta Pierz, suggerirei:
while ps axg | grep -vw grep | grep -w process_name > /dev/null; do sleep 1; done
In questo caso, grep -vw grep
garantisce che grep corrisponda solo a process_name e non a grep stesso. Ha il vantaggio di supportare i casi in cui nome_processo non si trova alla fine di una riga in ps axg
.
Soluzione 2 (utilizzando il comando principale e il nome del processo):
while [[ $(awk '$12=="process_name" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
Sostituisci process_name
con il nome del processo che appare in top -n 1 -b
. Conservare le virgolette.
Per visualizzare l'elenco dei processi in attesa che siano terminati, è possibile eseguire:
while : ; do p=$(awk '$12=="process_name" {print $0}' <(top -n 1 -b)); [[ $b ]] || break; echo $p; sleep 1; done
Soluzione 3 (utilizzando il comando principale e l'ID processo):
while [[ $(awk '$1=="process_id" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
Sostituisci process_id
con l'ID processo del tuo programma.