Bonjour,
J'aurais besoin de vos lumières…
Je voudrais envoyer le résultat de plusieurs commandes (avec pipe) dans Zenity (pour témoigner du bon fonctionnement du script).
Pour simplifier je prendrais cet exemple:
borg check -v --repository-only /mnt/sauvegarde1 2>&1 | sed 's/^.*/#&/g' | zenity --progress --pulsate
Et là ça ne fonctionne pas…
Quelques explications : dans la barre de progression de zenity le message peut être actualisé en lui envoyant des lignes préfixées par # (voir Zenity) d'où la commande sed.
Le problème est que le résultat du 1er pipe est envoyé en bloc à zenity, à la fin du traitement, et non pas au fur et à mesure. Zenity n'affiche donc que la dernière ligne quand le traitement des commandes est complètement finit.
Cela est vérifiable avec :
borg check -v --repository-only /mnt/sauvegarde1 2>&1 | sed 's/^.*/#&/g' | tr "\n" "o"
qui affiche tous les résultats sur une ligne en supprimant des retours à la ligne, donc tr reçoit tous les résultats en un seul bloc et pas des lignes au fur et à mesure (il n'y aurait pas de retour à la ligne dans ce cas).
A noter que le problème n'est pas lié à sed puisque j'ai le même comportement avec tee.
J'ai beau tourner le problème dans tous les sens je ne trouve pas de solution…
Comment faire pour envoyer les résultats des premières commandes à zenity de façon progressive ?
Une idée géniale ???
NB: la balise "Code Block" dans l’éditeur de message ne fonctionne pas, je suis allé chercher la balise dans l'aide à l'édition du wiki.
# au hazard
Posté par NeoX . Évalué à 3.
tu chercherais pas à reinventer l'option --progress de borg ?
[^] # Re: au hazard
Posté par philouou . Évalué à 1.
En fait non mais c'est très bien vu ! J'avais loupé cette option…
J'ai pris cet exemple pour faire simple mais en fait j'ai fait un petit script (pas loin de 200 lignes avec les commentaires) de sauvegarde pour mes besoins personnels qui enchaîne borg create puis borg prune puis borg check.
Je viens de vérifier mais je ne peux pas utiliser l'option progress dans mon script car j'utilise des redirections de stdout et stderr dans une fonction pour écrire dans fichier de log, du coup la progression ne s'affiche pas (et en plus il faudrait que j'arrive à la rediriger dans zenity).
Je voulais donc afficher une barre d'attente, en mode graphique, pour que les utilisateurs ne coupent pas l'ordinateur pendant la sauvegarde et sache que le script n'est pas planté.
Une autre idée ?
[^] # Re: au hazard
Posté par NeoX . Évalué à 2.
tu peux tester l'hypothese emise en dessous, que ce soit le buffer de sed,
mais si tu as tester un borg check >/tmp/log avec un tail -f /tmp/log depuis un autre terminal,
et que tu ne vois rien avant la fin, c'est bien que borg bufferise.
l'option progress ne semble pas faire ce que tu veux, mais permet peut-etre d'avoir un affichage,
et de recuperer cet affichage pour le mettre dans zenity, plutot que de scripter des trucs à toi.
à voir si tu rediriges tous les canaux dans un seul, puis que tu filtres/retravailles
# sed et tampon
Posté par JJD . Évalué à 4.
Salut,
Ce comportement est causé par sed qui bufferise la sortie.
Tu dois pouvoir obtenir le comportement qui t'intéresse en ajoutant l'option "--unbuffered" à sed.
[^] # Re: sed et tampon
Posté par philouou . Évalué à 1.
Bonsoir,
Je rentre juste du travail et alors là merci !!!
Effectivement avec "--unbuffered" ça fonctionne parfaitement. Je n'aurais jamais trouvé seul.
Ma commande fonctionnelle:
Pour NeoX : le controle de tail -f /tmp/log pendant que borg check -v /mnt/sauvegarde1 2>/tmp/log tourne sur un autre terminal montre un affichage progressif des informations.
Merci encore à vous 2. Cela faisait quand même 2 jours que je tournais en rond…
[^] # Re: sed et tampon
Posté par Cyril Brulebois (site web personnel) . Évalué à 3.
<toubonnais>Pour info, un emballage qui va bien pour jouer avec la tamponnisation :
stdbuf
des outils centraux.</toubonnais><frenglish>Pour info, un wrapper qui va bien pour jouer avec la bufferisation :
stdbuf
descoreutils
.</frenglish>Debian Consultant @ DEBAMAX
[^] # Re: sed et tampon
Posté par philouou . Évalué à 1. Dernière modification le 18 juillet 2018 à 23:05.
Magnifique commande que
stdbuf
, totalement inconnue pour ma part… Cela m'aurait fait gagner beaucoup de temps, je la garde précieusement.Merci.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.