Si l'on fait :

./commande.sh | affichage_progressif

Alors la sortie de commande.sh est buffurisée avec un tampon de 4k.

Si l'on souhaite désactiver ce buffer, et d'avoir la sortie de commande.sh au fil de l'eau, il y a 2 possibilités :

1/ La commande unbuffer

Installation de la commande unbuffer :

apt-get install expect

Utilisation de la commande unbuffer :

unbuffer ./commande.sh | affichage_progressif

S'il y a plusieurs pipes, il faut utiliser unbuffer avec -p :

unbuffer ./commande.sh | unbuffer -p ./deuxieme_commande.sh | affichage_progressif

2/ Utiliser stdbuf

stdbuf -i0 -o0 -e0 ./commande.sh | affichage_progressif

...qui supprime complètement le buffer

ou

stdbuf -oL -eL ./commande.sh

... qui ne garde qu'un buffer minimum d'une ligne (plus rapide dans la plupart des cas en ligne de commande !)

Previous PostNext Post