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
[email protected]
http://lists.parinux.org/mailman/listinfo/linux