stdbuf
Lance une commande et change la façon dont ses entrées/sorties sont bufferisées.
Après quelques essais sur mes logs, je ne vois pas de différence lors d'un grep sur 200Mo.
En fait, je n’en ai eu aucune utilité pendant très longtemps, parce que par défaut, le buffer est géré assez intelligemment : en privilégiant l’efficacité pour les fichiers et les pipes, en le vidant à chaque fin de ligne pour la sortie standard.
Le problème, avec les trucs intelligents, ce sont les cas particuliers où ils deviennent des conneries.
En l’occurrence, la surveillance de quelque chose qui ne produit qu’une trace de temps en temps, afin de lancer une commande suite à certaines traces.
Donc je fais tranquillement un
udevadm monitor --udev |
pour traiter la sortie derrière et... ça ne fonctionne pas, en tout cas pas avant que d’autres traces se soient accumulées, parce que le buffer du pipe n’est vidé que quand il est assez plein.
Là, stdbuf permet de résoudre le problème en réglant le buffer pour qu’il se vide à chaque ligne :
# Effet buf !
Posté par _Laurent_ (site web personnel) . En réponse au journal Le core utile. Évalué à 7.
En fait, je n’en ai eu aucune utilité pendant très longtemps, parce que par défaut, le buffer est géré assez intelligemment : en privilégiant l’efficacité pour les fichiers et les pipes, en le vidant à chaque fin de ligne pour la sortie standard.
Le problème, avec les trucs intelligents, ce sont les cas particuliers où ils deviennent des conneries.
En l’occurrence, la surveillance de quelque chose qui ne produit qu’une trace de temps en temps, afin de lancer une commande suite à certaines traces.
Donc je fais tranquillement un
pour traiter la sortie derrière et... ça ne fonctionne pas, en tout cas pas avant que d’autres traces se soient accumulées, parce que le buffer du pipe n’est vidé que quand il est assez plein.
Là,
stdbufpermet de résoudre le problème en réglant le buffer pour qu’il se vide à chaque ligne :Prendre une bonne disposition : beop.free.fr