PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > shell script et processus asynchrones
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

shell script et processus asynchrones

Réponse
 
LinkBack Outils de la discussion
Vieux 17/05/2006, 21h22   #1 (permalink)
Emmanuel Dreyfus
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut shell script et processus asynchrones

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
  Réponse avec citation
Vieux 17/05/2006, 21h25   #2 (permalink)
Luc Habert
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell script et processus asynchrones

Le plus simple consiste à passer par un pipe nommé.
  Réponse avec citation
Vieux 18/05/2006, 08h30   #3 (permalink)
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
Vieux 18/05/2006, 21h37   #4 (permalink)
Emmanuel Dreyfus
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell script et processus asynchrones

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
  Réponse avec citation
Vieux 19/05/2006, 08h41   #5 (permalink)
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell script et processus asynchrones

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
  Réponse avec citation
Vieux 19/05/2006, 11h35   #6 (permalink)
Christophe Blaess
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell script et processus asynchrones

> 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
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 23h53.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,10612 seconds with 14 queries