Swisslinux.org

− Le carrefour GNU/Linux en Suisse −

 

Langue

 

Le Forum

Vous n'êtes pas identifié.

#1 27 Apr 2005 13:35:29

Bashful
Citoyen(ne)
 
Date d'inscription: 22 Apr 2005
Messages: 14

[BASH] Problème de log (info)

Bonjour tout le monde,

Voila j'ai un petit problème dans un de mes scripts, j'aimerais bien afficher une commande et la logger en même temps, pour vérifier les erreurs.

J'ai essayer avec la commande 'tee' mais je n'est pas les erreurs.
Voici la ligne de mon script :

Code:

 nice -+19 $cmd | tee $log_tmp/error.log 

Et dans celui-ci j'ai bien le résultat de la commande sauf les erreurs.
Et les options de cette commande ne sont pas super fournis.

Je suppose que quelqu'un a déjà rencontré ce problème dans un de ses scripts.

Merci d'avance.

Hors ligne

 

#2 27 Apr 2005 13:49:57

BOFH
Admin
Lieu: Ecublens, VD
Date d'inscription: 03 Feb 2005
Messages: 862
Site web

Re: [BASH] Problème de log (info)

Hello,

  Problème classique. Chaque processus a deux flux de sorties, un pour les données et un pour les erreurs. Les pipes sont normalement utilisés pour faire passer des données, donc par défaut seul la sortie de données (stdout) est copiée vers le processus suivant. La sortie d'erreurs (stderr) arrive toujours directement sur ton écran. Plusieurs solutions sont possibles, suivant le résultat que tu veux atteindre.

  J'utilise la syntaxe bash. Pour csh c'est légérement différent.

1) Regrouper les deux sorties en une seule: la redirection 2>&1 redirige le 2e descripteur de fichier (stderr) vers le premier (stdout)

Code:

nice -n 19 $cmd 2>&1 | tee...

2) stocker les donnés et les erreurs dans un fichier différent, et n'afficher que les erreurs: 2>&1 redirige stderr vers le stdout actuel (l'entrée du pipe), puis redirige le stdout vers un fichier de données. (l'ordre est important)

Code:

nice -n 19 $cmd 2>&1 >$log_tmp/data.log |tee $log_tmp/error.log

pour plus d'infos la dessus,

Code:

man bash

et bonne indigestion


++
BOFH :cheesy:

Hors ligne

 

#3 27 Apr 2005 14:07:53

Bashful
Citoyen(ne)
 
Date d'inscription: 22 Apr 2005
Messages: 14

Re: [BASH] Problème de log (info)

Merci pour ton cours fort intéressant BOFH, je ne savait pas que seul le flux stdout passait entre processus avec un "pipe", je pensait bêtement que le "pipe" ferait passer les deux flux.

Oki merci.

je vais utiliser :

Code:

 nice -n 19 $cmd 2>&1 | tee $log_tmp/error.log 

car je veux afficher les deux flux mais stocker que les erreurs dans un fichier.

Hors ligne

 

#4 28 Apr 2005 10:42:30

Bashful
Citoyen(ne)
 
Date d'inscription: 22 Apr 2005
Messages: 14

Re: [BASH] Problème de log (info)

Salut !

Pour "logguer" toutes les sorties d'une commande tout en les affichant à la console la commande 'script' est très pratique :

Code:

 script -fac "mplayer ...." error.log 

option :
-a : comme pour tee "append", écrit à la suite dans le fichier.
-f : "flush" permet de regarder le log en même temps que la commande s'exécute.
-c : c'est pour spécifier une commande.

sinon 'script' permet aussi de "logguer" tout ce qu'il se passe dans un terminal :

Code:

script -f error.log

Il va "logguer" tout ce qu'il va être affiché dans le terminal.
Voila, en espérant que ça puisse aider certains.

Bash'

Hors ligne

 

Pied de page des forums

Powered by FluxBB