Bonjour à tous,
Je souhaiterai rediriger un flux de données vers un fichier texte.
La commande est la suivante : "dsp-load" et elle me renvoi un flux d'informations sans fin.
root@g-bill:~# dsp-load
load: 0, freq: 0
load: 0, freq: 0
load: 0, freq: 0
load: 0, freq: 0
load: 0, freq: 0
load: 0, freq: 0
load: 0, freq: 0
load: 0, freq: 0
load: 0, freq: 0
load: 0, freq: 0
Je fais ctrl+c pour stoper la commande. Pour rediriger j'ai essayé : dsp-load > fichier.txt mais mon fichier.txt est vide.
Comment dois-je faire?
Merci d'avance.
Laurent :)
# te renseigner sur les flux dans un shell
Posté par NeoX . Évalué à 1.
il y a 3 types de flux par defaut
STDIN pour les flux entrant,
STDOUT pour les sorties,
STDERR pour les sorties de messages d'erreurs.
ton programme dsp-load envoie des infos, mais ce sont peut-etre des messages "d'erreur"
ils sont donc envoyé sur STDERR et c'est 2> qui fait la redirection
STDIN c'est fichier_sortant.txt
STDERR c'est 2>fichier_sortant_erreur.txt
[^] # Re: te renseigner sur les flux dans un shell
Posté par laurentdu38 . Évalué à 1.
Merci de ta réponse NeoX, j'ai essayé aussi avec 2> , 1> , 2>&1 et rien ne marche. Est-ce que cela peut venir du fait qu'il faut pas que la commande se termine pour écrire dans le fichier.txt ?
Merci :)
[^] # Re: te renseigner sur les flux dans un shell
Posté par NeoX . Évalué à 2.
reste à aller lire le manuel de dsp-load
moi j'ai parlé des flux standard, mais rien n'empeche un programme de sortir ces infos sur un autre flux (bien que cela m'etonne de le voir dans la console)
# changer la redirection ?
Posté par Pierre . Évalué à 1.
Je ne connais pas la commande dsp-load, mais la redirection de vers le fichier fonctionnerait peut être mieux en utilisant >> (ajouter à la fin du fichier) a la place de > (créer un fichier).
[^] # Re: changer la redirection ?
Posté par laurentdu38 . Évalué à 1.
J'ai aussi essayé >> mais cela ne marche pas non plus. Pourtant il me semble que tout ce qui passe dans la console peut-être récupéré.
# stdbuf
Posté par ✅ ffx . Évalué à 2.
Probablement un problème de bufferisation de stdout
Pour voir, essaie
stdbuf -o 0 dsp-load > fichier.txt
[^] # Re: stdbuf
Posté par laurentdu38 . Évalué à 1.
Pareil toujours un fichier vide.
# Récupérer flux de données
Posté par ymorin . Évalué à 2.
Certains programmes détectent si leur sortie est redirigée, et se comportent différemment dans ce cas. Par exemple,
curl
par défaut sort le résultat de la requête surstdout
, et n'affiche rien surstderr
; par contre si tu redirigesstdout
vers un fichier, alorscurl
affiche sa progression surstderr
.Ne connaissant pas ton
dsp-load
, peut-être passe-t-il en mode silencieux lorsque sa sortie est redirigée.Que fait ceci:
Hop,
Moi.
[^] # Re: Récupérer flux de données
Posté par laurentdu38 . Évalué à 0.
Merci de ta réponse ymorin. dsp-load | cat ne fait rien malheureusement :'( cela ne me retourne rien.
[^] # Re: Récupérer flux de données
Posté par NeoX . Évalué à 3.
si dsp-load | cat ne renvoie rien c'est que le | intercepte bien ce qui sort de dsp-load
du coup tu dois pouvoir faire un
dsp-load | tee -a fichier.log
[^] # Re: Récupérer flux de données
Posté par laurentdu38 . Évalué à 1.
Cela marche pas non plus avec dsp-load | tee -a fichier.log.
C'est bon j'ai une solution, je lance la commande script avec de lancer ma commande dsp-load.
Voilivilou. Merciii
# buffer
Posté par laurentdu38 . Évalué à 0.
Erreur de ma part, cela marche avec dsp-laod > "fichier.txt" En fait fallait attendre environ 3 min, le temps que le buffer se remplisse, et qu'il se vide dans fichier.txt.
Mais comment vider le buffer plutôt pour ne pas attendre si longtemps?
[^] # Re: buffer
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 1. Dernière modification le 13 décembre 2011 à 11:06.
Pour cela il faut modifier le programme "dsp-load" afin de desactiver le buffering de sortie,
via par exemple pour du C:
Edit: il manque la coloration C/C++...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.