|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 (permalink) |
|
Messages: n/a
Hébergeur: |
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? -- Emmanuel Dreyfus manu@netbsd.org |
|
|
|
#3 (permalink) |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#4 (permalink) |
|
Messages: n/a
Hébergeur: |
Stephane Chazelas <cette.adresse@est.invalid> wrote:
> C'est quoi "kill -INFO", BTW? Ca dit à dd de dire où il en est. -- Emmanuel Dreyfus manu@netbsd.org |
|
|
|
#5 (permalink) |
|
Messages: n/a
Hébergeur: |
2006-05-18, 22:37(+02), Emmanuel Dreyfus:
> Stephane Chazelas <cette.adresse@est.invalid> wrote: > >> C'est quoi "kill -INFO", BTW? > > Ca dit à dd de dire où il en est. [...] Ma question etait plutot d'ou vient ce SIGINFO. Ce n'est pas un signal POSIX ou Unix. Apparemment, c'est du BSD. Ce signal peut etre generé par un driver de terminal sur reception du control-character "status" (par defaut <Ctrl-T>). C'est pas con. http://www.freebsd.org/cgi/man.cgi?q...SD+6.0-RELEASE | STATUS Special character on input and is recognized if the ICANON flag | is set. Receipt of this character causes a SIGINFO signal to be | sent to the foreground process group of the terminal. Also, if | the NOKERNINFO flag is not set, it causes the kernel to write a | status message to the terminal that displays the current load | average, the name of the command in the foreground, its process | ID, the symbolic wait channel, the number of user and system sec- | onds used, the percentage of cpu the process is getting, and the | resident set size of the process. Ca n'a meme pas l'air d'etre recent, ca a l'air d'avoir deja ete la dans FreeBSD 1.0 et ses ancetres. Premiere fois que j'en /entends/ parler. -- Stéphane |
|
|
|
#6 (permalink) |
|
Messages: n/a
Hébergeur: |
> Ma question etait plutot d'ou vient ce SIGINFO. Ce n'est pas un
> signal POSIX ou Unix. Apparemment, c'est du BSD. Ce signal peut > etre generé par un driver de terminal sur reception du control-character > "status" (par defaut <Ctrl-T>). > > C'est pas con. Tiens c'est marrant, je ne connaissais pas ce site : <http://www.siginfo.org/> -- Christophe |
|
![]() |
| Outils de la discussion | |
|
|