Résulta sortie de commande console
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je cherche en vain a récupérer le sortie standard de mon programme, si je le redirige dans un fichier, je me retrouve avec des millier de ligne.
Ce que je voudrais, c'est récupérer la sortie standard de mon programme toute les 10 seconde environ. et ce dans un fichier.
j'ai déjà lancé cette commande ( monprg > fichier.text ) qui me redirige la sortie dans un fichier , mais après quelques minutes, le fichier fait 48000 lignes !!! et donc travailler dessus devient impossible, sachant que je veux la dernière ligne...
je sais que je demande l'impossible mais si quelqu'un peu m'éclairer, me donner une façon de faire puisque je suis complétement perdu.
Voila si besoin demandez moi.
je cherche en vain a récupérer le sortie standard de mon programme, si je le redirige dans un fichier, je me retrouve avec des millier de ligne.
Ce que je voudrais, c'est récupérer la sortie standard de mon programme toute les 10 seconde environ. et ce dans un fichier.
j'ai déjà lancé cette commande ( monprg > fichier.text ) qui me redirige la sortie dans un fichier , mais après quelques minutes, le fichier fait 48000 lignes !!! et donc travailler dessus devient impossible, sachant que je veux la dernière ligne...
je sais que je demande l'impossible mais si quelqu'un peu m'éclairer, me donner une façon de faire puisque je suis complétement perdu.
Voila si besoin demandez moi.
A voir également:
- Résulta sortie de commande console
- Invite de commande - Guide
- Commande terminal mac - Guide
- Test console steam deck - Guide
- Airpods 3 date de sortie - Guide
- Console action - Accueil - Jeu vidéo
13 réponses
Bonjour,
as-tu essayé avec tail?
(tacommande | tail > tonfichier)
Cordialement
NB: cela devrait te renvoyer les 10 dernières lignes, mais tu pourras faire varier ce nombre avec l'option -n
as-tu essayé avec tail?
(tacommande | tail > tonfichier)
Cordialement
NB: cela devrait te renvoyer les 10 dernières lignes, mais tu pourras faire varier ce nombre avec l'option -n
bonsoir, je m'était servit de tail pour faire un affichage de ma dernière ligne.
Mais pas de cette façons ! je teste et je te donne des résulta !
Mais pas de cette façons ! je teste et je te donne des résulta !
Après avoir testé, je me retrouve avec pour un traitement plus court 2300 ligne.
mais si j'applique tail rien de change. j'ai toujours autant de lignes...
mais si j'applique tail rien de change. j'ai toujours autant de lignes...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello,
je ne connais pas particulièrement ce programme mais comment se comporte-t-il quand il est utilisé sans la redirection ?
Y a t-il par exemple, un compteur de progression rafraîchi plusieurs fois par seconde qui s'affiche ... ?
Ou bien (c'est semble-t-il un downloader ?) les données chargées, sans commutateur (un peu comme avec curl), sont affichées vers la console, et en fait ce sont les datas téléchargées qui sont actuellement redirigées vers le fichier.
Qu'est ce que contient actuellement le fichier vers lequel la sortie standard est redirigée ?
Que cherches tu à faire en loguant la sortie de ce prog. ?
Ce qui serait peut être plus intéressant serait, peut-être, de récupérer la sortie des erreurs, en bref le stderr que le stdout ?
Sinon si c'est vraiment sur la sortie standard que l'on cherche à obtenir une info, par exemple, un message confirmant la fin du téléchargement, dans ce cas là, il faut piper vers un grep ...
Voilà ...
You may stop me but you can't stop us all ;-)
je ne connais pas particulièrement ce programme mais comment se comporte-t-il quand il est utilisé sans la redirection ?
Y a t-il par exemple, un compteur de progression rafraîchi plusieurs fois par seconde qui s'affiche ... ?
Ou bien (c'est semble-t-il un downloader ?) les données chargées, sans commutateur (un peu comme avec curl), sont affichées vers la console, et en fait ce sont les datas téléchargées qui sont actuellement redirigées vers le fichier.
Qu'est ce que contient actuellement le fichier vers lequel la sortie standard est redirigée ?
Que cherches tu à faire en loguant la sortie de ce prog. ?
Ce qui serait peut être plus intéressant serait, peut-être, de récupérer la sortie des erreurs, en bref le stderr que le stdout ?
megadl 'https://mon_adresse' 2> fichier_des_erreurs.log
Sinon si c'est vraiment sur la sortie standard que l'on cherche à obtenir une info, par exemple, un message confirmant la fin du téléchargement, dans ce cas là, il faut piper vers un grep ...
megadl 'https://mon_adresse' | grep "le message que je cherche à voir" > fichier_des_erreurs.log
Voilà ...
You may stop me but you can't stop us all ;-)
Salut,
Pour t'aider il faudrait qu'on en sache un peu plus sur ce que fait réellement ton programme, et surtout ce qu'il produit comme sortie ;-\
Pour t'aider il faudrait qu'on en sache un peu plus sur ce que fait réellement ton programme, et surtout ce qu'il produit comme sortie ;-\
Bonjour, alors pour vous répondre à tous :
- "je ne connais pas particulièrement ce programme mais comment se comporte-t-il quand il est utilisé sans la redirection ? " il se comporte de la meme facon que si je fait la redirection !
- "Y a t-il par exemple, un compteur de progression rafraîchi plusieurs fois par seconde qui s'affiche ... ? "Oui il s'agit d'un programme qui télécharge le fichier que l'on lui donne. mais plus spécifiquement un fichier provenant du site mega la progression s'affiche de cette manière, en une seule ligne qui s'actualise : buildire.rar: 4% - 158,9 Kio of 3,2Â Mio
- "Qu'est ce que contient actuellement le fichier vers lequel la sortie standard est redirigée ? " le fichier dans lequel sont redirigé les valeur ce trouve comme ceci après ou pendant l'exécution du programme : (exemple sur 20 ligne et pas 2300 ... :) )
les valeur avec crochet tel que " [37;1m" corresponde aux couleur d'affichage du texte.
- "Que cherches tu à faire en loguant la sortie de ce prog. ? " ==> ce programme est censé télécharger un fichier depuis le site mega et retourner l'avancement grâce au fichier de log pour avoir le pourcentage. et ainsi actualiser la page avec php. php a pour rôle d'exécuter la commande et ensuite de vérifier l'état de l'avancement. Mais pour l'instant je cherche a le faire a la main sans automatiser la tache mais c'est la que je bug ...
- je ne peux pas chercher une valeur en particulier puisque je cherche a récupérer le pourcentage d'avancement. qui théoriquement change.
comme il y a beaucoup de ligne ce que maintenant je cherche a faire c'est limiter le nombre qui sera écrit dans le fichier. par exemple un début serait d'actualiser le fichier toute les 10 secondes avec une ligne récupéré a un l'instant T dans la sortie standard du programme. histoire de me retrouver avec un fichier de quelques centaine et pas des millier de ligne.
Voila j'espère avoir répondu a vos questions ...
et j'espère que mes réponse vous aiderons a m'aider ...
Merci pour tous en tout cas.
- "je ne connais pas particulièrement ce programme mais comment se comporte-t-il quand il est utilisé sans la redirection ? " il se comporte de la meme facon que si je fait la redirection !
- "Y a t-il par exemple, un compteur de progression rafraîchi plusieurs fois par seconde qui s'affiche ... ? "Oui il s'agit d'un programme qui télécharge le fichier que l'on lui donne. mais plus spécifiquement un fichier provenant du site mega la progression s'affiche de cette manière, en une seule ligne qui s'actualise : buildire.rar: 4% - 158,9 Kio of 3,2Â Mio
- "Qu'est ce que contient actuellement le fichier vers lequel la sortie standard est redirigée ? " le fichier dans lequel sont redirigé les valeur ce trouve comme ceci après ou pendant l'exécution du programme : (exemple sur 20 ligne et pas 2300 ... :) )
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m0 octet [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m1,4 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m2,8 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m4,2 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m5,6 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m7,0 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m8,4 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m9,8 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m11,2 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m12,7 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m14,1 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m15,5 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m16,9 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m18,3 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m19,7 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m21,1 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m22,5 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m23,9 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m25,3 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m26,7 Kio [0m of 3,2 Mio [0K
les valeur avec crochet tel que " [37;1m" corresponde aux couleur d'affichage du texte.
- "Que cherches tu à faire en loguant la sortie de ce prog. ? " ==> ce programme est censé télécharger un fichier depuis le site mega et retourner l'avancement grâce au fichier de log pour avoir le pourcentage. et ainsi actualiser la page avec php. php a pour rôle d'exécuter la commande et ensuite de vérifier l'état de l'avancement. Mais pour l'instant je cherche a le faire a la main sans automatiser la tache mais c'est la que je bug ...
- je ne peux pas chercher une valeur en particulier puisque je cherche a récupérer le pourcentage d'avancement. qui théoriquement change.
comme il y a beaucoup de ligne ce que maintenant je cherche a faire c'est limiter le nombre qui sera écrit dans le fichier. par exemple un début serait d'actualiser le fichier toute les 10 secondes avec une ligne récupéré a un l'instant T dans la sortie standard du programme. histoire de me retrouver avec un fichier de quelques centaine et pas des millier de ligne.
Voila j'espère avoir répondu a vos questions ...
et j'espère que mes réponse vous aiderons a m'aider ...
Merci pour tous en tout cas.
probable que les lignes ne se terminent pas avec \n mais avec \r
essayer
essayer
commande | awk 'BEGIN {RS="\r"; t=systime()} {if(systime()-t >= 10){print ; t=systime()}}'
C'est une chose que je n'est pas précisé ( désolé j'ai oublié ) Et oui je me suis aperçu que les ligne ne termine pas par des \n mais par des ^M et apparemment d'après mes recherche par un ^M qui est l'équivalent de \n sous mac...
donc si je comprend il faut que j'adapte
Est-ce correct ?
donc si je comprend il faut que j'adapte
commande | awk 'BEGIN {RS="\r"; t=systime()} {if(systime()-t >= 10){print ; t=systime()}}'en
commande | awk 'BEGIN {RS="^M"; t=systime()} {if(systime()-t >= 10){print ; t=systime()}}'
Est-ce correct ?
Sinon essayer d'enregistrer dans une variable le pourcentage de progression et n'enregistrer dans le log. l'heure, la taille récupéré et le pourcentage de progression qu'à chaque fois que ce pourcentage change, cela permettrait d'avoir une progression sur une centaine de ligne.
Nettoyer au passage les caractères inutiles dans la ligne, ne doit pas non plus être bien sorcier, d'autant plus que tu sembles mieux maîtriser que moi awk.
Sans oublier de garder une gestion des erreurs en cas de problème (pas de OK en fin de ligne ?) ...
Je ne vois pas trop comment coder ça, mais ça ne me semble pas impossible ...
si awk ne connait pas systime, essayer:
awk 'BEGIN {RS="\r"; d="date +%s"; d | getline t} {close(d); d | getline x; if(x-t >= 10){print ; close(d); d | getline t}}'
Cette commande me convient ! elle marche comme je le souhaite !
cependant si maintenant je veux rediriger cette sortie temporisé dans un fichier ? je rajoute " > file.txt " a la suite de la commande awk ?
Edit: après avoir testé cela marche ! Merci !
Par contre a la fin , quand le fichier est téléchargé le programme ecrit : file downloaded et la temporisation ne me permet pas de le récupérer : il y a t'il un moyen de le faire ?
cependant si maintenant je veux rediriger cette sortie temporisé dans un fichier ? je rajoute " > file.txt " a la suite de la commande awk ?
Edit: après avoir testé cela marche ! Merci !
Par contre a la fin , quand le fichier est téléchargé le programme ecrit : file downloaded et la temporisation ne me permet pas de le récupérer : il y a t'il un moyen de le faire ?
pardon je reformule :
Lorsque ça télécharge, awk fait son effet et m'affiche une ligne toute les x seconde.
Mais quand la commande ce termine en temps normale ( la commande megadl uniquement )
elle affiche " file downloaded ". Mais cela tombe entre l'intervalle de temps et awk n'a pas encore actualisé la ligne. ce que je souhaiterais c'est récupérer cette dernière ligne qui affiche "file downloaded".
Lorsque ça télécharge, awk fait son effet et m'affiche une ligne toute les x seconde.
Mais quand la commande ce termine en temps normale ( la commande megadl uniquement )
elle affiche " file downloaded ". Mais cela tombe entre l'intervalle de temps et awk n'a pas encore actualisé la ligne. ce que je souhaiterais c'est récupérer cette dernière ligne qui affiche "file downloaded".
BEGIN {RS="\r"; défini ^M comme fin de ligne à la place de \n
d="date +%s"; d contient la commande "date +%s" qui retourne des secondes (remplace systime()
d | getline t} exécute "date +%s" et met le resultat dans la variable t
{close(d); d | getline x; if(x-t >= 10) pour chaque ligne, prend la date et compare au t précédent
{print ; close(d); d | getline t}} si le temps est >= 10s, on imprime la ligne et on prend le nouveau temps
/file downloaded/ {print ; exit} si la ligne contient "file downloaded", on imprime et termine
d="date +%s"; d contient la commande "date +%s" qui retourne des secondes (remplace systime()
d | getline t} exécute "date +%s" et met le resultat dans la variable t
{close(d); d | getline x; if(x-t >= 10) pour chaque ligne, prend la date et compare au t précédent
{print ; close(d); d | getline t}} si le temps est >= 10s, on imprime la ligne et on prend le nouveau temps
/file downloaded/ {print ; exit} si la ligne contient "file downloaded", on imprime et termine