Todas estas soluciones se prueban en Ubuntu 14.04:
Solución 1 (usando el comando ps):
solo para agregar a la respuesta de Pierz, sugeriría:
while ps axg | grep -vw grep | grep -w process_name > /dev/null; do sleep 1; done
En este caso, grep -vw grep
asegura que grep solo coincida con nombre_proceso y no grep en sí mismo. Tiene la ventaja de admitir los casos en que process_name no está al final de una línea en ps axg
.
Solución 2 (usando el comando superior y el nombre del proceso):
while [[ $(awk '$12=="process_name" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
Reemplace process_name
con el nombre del proceso que aparece en top -n 1 -b
. Por favor, mantenga las comillas.
Para ver la lista de procesos que espera a que finalicen, puede ejecutar:
while : ; do p=$(awk '$12=="process_name" {print $0}' <(top -n 1 -b)); [[ $b ]] || break; echo $p; sleep 1; done
Solución 3 (usando el comando superior y la ID del proceso):
while [[ $(awk '$1=="process_id" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
Reemplace process_id
con el ID de proceso de su programa.