[gull] stdin, stdout dans un fichier

Claude Paroz claude at 2xlibre.net
Tue Aug 24 20:12:53 CEST 2010


Le mardi 24 août 2010 à 16:34 +0200, Blaise Vogel a écrit :
> Je me réponds, vu que l'on vient de me donner la solution:
> python -u
> enlève le buffering.
> 
> Blaise

Voir aussi :
http://docs.python.org/library/logging.html

Claude

> 
> ----- "Blaise Vogel" <bvogel at altux.ch> a écrit :
> 
> > ----- "Félix Hauri" <felix at f-hauri.ch> a écrit :
> > 
> > ...
> > > > Je duplique les sorties stdout et stderr d'une commande sur stdout
> > > et dans un fichier, soit:
> > > > command 2>&1|tee result.log
> > > >
> > > > Par contre la commande peut durer pas mal de temps, et l'affichage
> > > sur stdout ne se fera que à la fin de la commande. J'ai pensé à un
> > > truc un peu "crade":
> > > > touch result.log
> > > > tail -n0 -f result.log &
> > > > command >>result.log 2>&1
> > >
> > > Cette solution ne me parait pas crade du tout. Tu ``initialises''
> > > un pointeur de fichier avant de l'utiliser...
> > > Non, rien à redire...
> > Bof, je rêvais d'une commande en 1 ligne ...
> > 
> > >
> > > Il s'agit d'un problème de buffer en sortie, il existe des moyens
> > > de désactiver, mais je n'ai pas réussi à reproduire ta situation:
> > >
> > > $ ( echo -n coucou ; sleep 3 ) | tee /dev/null
> > >
> > > affiche instantannément ``coucou''.
> > >
> > > Quelle distribution utilises-tu et quel est la ``command'' que tu
> > > lances?
> > Bonne question. Debian Lenny ou Squeeze. Par contre la commande est un
> > script python avec des sorties par 'print ...' et dans ce cas le
> > retour ne se fait pas immédiatement. Je crois qu'il va être plus
> > intelligent de reprendre ces scripts et d'y ajouter le module syslog
> > ;-)
> > Pour test:
> > 
> > blaise at x02:~$ cat test.py
> > import time
> > print 'a'
> > time.sleep(2)
> > print 'b'
> > 
> > blaise at x02:~$ python test.py|tee /dev/null
> > 
> > Je remarque que j'ai le même comportement si je renvoie le retour de
> > la commande dans un fichier, le fichier est écrit seulement à la fin
> > de la commande. Par exemple:
> > blaise at x02:~$ python test.py >> result.log
> > 
> > 
> > Blaise Vogel
> > 
> > 
> > _______________________________________________
> > gull mailing list
> > gull at forum.linux-gull.ch
> > http://forum.linux-gull.ch/mailman/listinfo/gull
> 
> -- 
> Blaise Vogel
> 
> Altux SA
> Route de Lavaux 235
> 1095 Lutry
> +41 (0)21 796 12 49
> www.altux.ch
> _______________________________________________
> gull mailing list
> gull at forum.linux-gull.ch
> http://forum.linux-gull.ch/mailman/listinfo/gull

-- 
www.2xlibre.net



More information about the gull mailing list