1) como saber o PID de um comando iniciado com &
PID=$!
2) como descobrir que está em sleep
Depende muito da versão do comando, do tipo de Unix que você está trabalhando. Em um Linux Slackware 10.1, top versão 3.2.5, um comando similar a
$ top -b | grep processo
nos devolveria algo como:
25925 root 15 0 1356 1356 1008 S 0.0 0.2 0:00 processo
E o 8o campo nos dá o status do processo. Se for S, está em sleep. Você poderia fazer algo como
STATUS=$(top -b -n 1 | grep $PID | awk '{print $8}')
if [ $STATUS -eq "S" ] ; then
echo "Processo $PID dormindo"
fi
Usei grep $PID e não grep processo para termos certeza de que conseguimos o
status do processo que queremos.
3) como esperar?
wait $PID