• # Effet buf !

    Posté par (site web personnel) . En réponse au journal Le core utile. Évalué à 7.

    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 :

    stdbuf -oL udevadm monitor --udev |

    Prendre une bonne disposition : beop.free.fr