Afficher un message
Vieux 18/05/2006, 08h30   #3
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut 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
  Réponse avec citation
 
Page generated in 0,05995 seconds with 9 queries