Le Wednesday 30 March 2011 09:20:16 Laurent, vous avez écrit :
> Un phenomene de bufferisation des stdout.

Effectivement, si dans l'exemple présent ce qui est affiché sur l'écran c'est 
l'état de remplissage d'un tampon et non le déversement de son contenu sur la 
ligne standard, je conçois que ma méthode simpliste pour alimenter awk ne 
convienne pas.


> le grep sert a rien aussi
> inotifywait -m monmachin/ | awk ' /CREATE/{ print $NF }'

Je ne connaissais pas cette syntaxe d'entrée pour awk.
J'ai employé grep car ce que je sélectionne c'est l'évènement initial d'un 
flux. Le flux dans son intégralité c'est la création d'un nouveau fichier, 
son remplissage avec un contenu binaire, sa journalisation et la transmission 
du contenu par email.

monrépertoire/ CREATE fax0000005
monrépertoire/ OPEN fax0000005
monrépertoire/ MODIFY fax0000005
monrépertoire/ CLOSE_WRITE,CLOSE fax0000005
monrépertoire/ OPEN,ISDIR
monrépertoire/ CLOSE_NOWRITE,CLOSE,ISDIR
monrépertoire/ OPEN fax0000005
monrépertoire/ ACCESS fax0000005
monrépertoire/ CLOSE_NOWRITE,CLOSE fax0000005



Cette forme n'alimente pas awk :
$ inotifywait -m monrépertoire/  | awk ' /CREATE/{ print $NF }'



Par contre celle-ci, qui n'utilise ni grep ni awk, extrait bien la dernière 
colonne :

> ou en restant en shell
> inotifywait -m monmachin/ | while read a b c
> do
> if [ "$b" = "CREATE" ]
> then
>   echo $c
> fi
> done

Je peux mettre sa sortie dans un fichier plat donc je vais pouvoir remplir une 
base de données.


> Par contre lequel ne flush pas ses sorties, un petit strace sur l'un ou
> l'autre devrait le dire

Oui, je vais regarder ce que donne un traçage pour comprendre le mécanisme.



> * en fait c'est le grep apparement qui bufferise ses sorties

Effectivement.
Celui-là, je m'en souviendrai!


Merci beaucoup pour ce coup de pouce.




-- 
Alain Vaugham
Clef GPG : 0xD26D18BC
_________________________________
Linux mailing list
Linux@lists.parinux.org
http://lists.parinux.org/mailman/listinfo/linux

Répondre à