#1 Le 11/06/2013, à 14:36
- Dznet
Impossible d'enregistrer le résultat d'une commande dans un fichier
Bonjour,
J'ai cette commande et je veux enregistrer le résultat dans un fichier, mais impossible de faire
top | awk '/fire*/' >> /tmp/suiviFireFox.log
Mais rien de s'enregistre dans le fichier /tmp/suiviFireFox.log alors que la commande donne bien un résultat
Le fichier /tmp/suiviFireFox.log existe bien.
top | awk '/fire*/'
19792 toto 20 0 662m 110m 35m S 24,9 1,4 0:00.75 firefox
19792 toto 20 0 664m 112m 36m S 3,0 1,4 0:00.84 firefox
19792 toto 20 0 704m 111m 42m S 2,0 1,4 0:00.90 firefox
Merci pour votre aide
Dernière modification par Dznet (Le 11/06/2013, à 14:37)
Hors ligne
#2 Le 11/06/2013, à 15:01
- pingouinux
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
Bonjour,
Peut-être un problème de permission. Que donne
ls -l /tmp/suiviFireFox.log
Rectificatif :
Il faut lancer top en batch
top -b | awk '/fire*/' >>/tmp/suiviFireFox.log
Dernière modification par pingouinux (Le 11/06/2013, à 15:07)
Hors ligne
#3 Le 11/06/2013, à 15:47
- Dznet
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
Merci pour ta réponse
j'ai les bonne permission
ls -ll suiviFireFox.log
-rw-r--r-- 1 root root 1 juin 11 16:43 suiviFireFox.log
La commande de top en batch ne donne rien aussi
Hors ligne
#4 Le 11/06/2013, à 16:25
- pingouinux
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
C'est root qui est le propriétaire du fichier. Es-tu root lorsque tu lances la commande ?
Hors ligne
#5 Le 12/06/2013, à 12:17
- Dznet
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
En fait quand je dis que j'ai les bonne permission, c'est que j'utilise bien le bon propriétaire du fichier, donc root
Hors ligne
#6 Le 12/06/2013, à 12:50
- akaoni
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
top | awk '/fire*/' 2>&1 >> /tmp/suiviFireFox.log
Ca doit partir sur stderr.
Hors ligne
#7 Le 12/06/2013, à 13:56
- pingouinux
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
@akaoni : La sortie est bien sur stdout
Essayer :
top | stdbuf -o0 awk '/fire*/' >> /tmp/suiviFireFox.log
ou
top -b | stdbuf -o0 awk '/fire*/' >> /tmp/suiviFireFox.log
Dernière modification par pingouinux (Le 12/06/2013, à 13:56)
Hors ligne
#8 Le 12/06/2013, à 14:28
- Michel SIMIAN
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
Bonjour,
Ce n'est pas un problème de droits ou autre.
C'est que top, par défaut, écrit toutes les secondes. Or, le système bufferise et si tu n'attends pas assez, et coupe par CTRL C, le fichier ne contient pas les données non encore écrites.
J'ai essayé ta commande avec
top -d 0.10 | awk '/fire*/' >>/tmp/bidon
et là,il suffit d'attendre 4 à 5 secondes pour avoir une cinquantaine de lignes...
Dernière modification par Michel SIMIAN (Le 12/06/2013, à 14:28)
Hors ligne
#9 Le 12/06/2013, à 16:44
- pingouinux
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
@Michel SIMIAN : Justement, la commande que j'indique en #7 a pour but de na pas bufferiser les sorties. Voir man stdbuf.
Hors ligne
#10 Le 14/06/2013, à 11:03
- claudius01
Re : Impossible d'enregistrer le résultat d'une commande dans un fichier
Bonjour,
Sinon et sauf erreur de ma part, à la place d'utiliser top, il est possible d'utiliser la commande interne ps comme :
$ ps -elf
qui fournit les mêmes informations (ou presque) que top hormis le fait qu'il faut la relancer pour les rafraîchir...
Cordialement, A+
--
Claudius
Dernière modification par claudius01 (Le 14/06/2013, à 15:33)
Hors ligne