Re: shell script et processus asynchrones
2006-05-17, 22:22(+02), Emmanuel Dreyfus:
> Immaginons que je veuille à intervalle de temps regulier afficher où en
> est un dd long, je peux faire ca:
>
> dd if=foo of=bar bs=1024 count=$total &
> pid=$!
> while kill -INFO $pid 2>/dev/null ; do sleep 10 ; done
>
> Bon, maintenant, si je veux faire la même chose, mais en filtrant
> l'erreur standard de dd pour par exemple afficher le pourcentage, un
> truc du genre:
>
> dd if=foo of=bar bs=1024k count=$total | \
> awk -vt=$total '!(NR % 3}{printf("%02d%%\n", $1*100/(1024*t));}'
>
> Le but du jeu est de combiner ca avec le bout de shell script décrit
> plus haut, mais le pid=$! va me donner le pid de awk et plus celui de
> dd.
>
> Une astuce pour résoudre ce problème?
[...]
Avec zsh, la liste des pid se trouve dans $jobstates[<jobnr>]
Sinon du peux faire:
{
dd if=foo of=bar bs=1024 count="$total" &
pid=$!
while kill -INFO "$pid" 2>/dev/null ; do sleep 10 ; done
} | awk ...
C'est quoi "kill -INFO", BTW?
--
Stéphane
|