Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/05/2012, à 12:44

altair8080

PB : STDOUT et STDERR dans 2 fichiers logs <> et une sortie terminal

bonjour mon script bash
l'objectif est de  tracer les informations STDOUT dans trace.log et STDERR dans erreur.log
mais aussi d'afficher sur le terminal pour voir l'avancement

le problème est qu'avec le script suivant j'ai bien la sortie sur tty mais les fichiers de sorties sont vides
De plus il y a des messages d'erreurs pour les descripteurs au moment de la fermeture (voir plus bas pour le résultat)

#!/bin/bash
 
#redirection STDERR dans un fichier de log et affichage sur le terminal en //
exec 6>&2
exec 2>>erreur.log | tee erreur.log
 
#redirection STDOUT dans un fichier de log et affichage sur le terminal en //
exec 5>&1
exec 1>>trace.log | tee trace.log
 
trap 'error_handler ${LINENO} $?' ERR
trap 'exit_handler' EXIT
 
error_handler()
{
       SCRIPTNAME="$0"               
        LIGNE="$1"
        ERREUR="$2"
        echo "Dernière erreur : `date` dans le ${SCRIPTNAME}: ligne ${LIGNE}: code erreur: ${ERREUR}"
}
 
exit_handler()
{
# restaurer le STDERR
exec 2>&6 6>&-
#restaurer le STDOUT
exec 1>&5 5>&-
}
 
 
ls -xyz
ls /home
 
#sortie
exit_handler

résultat

~$ ./tt.sh 
ls : option invalide -- 'y'
Saisissez « ls --help » pour plus d'informations.
Dernière erreur : dimanche 27 mai 2012, 12:39:24 (UTC+0200) dans le ./tt.sh: ligne 31: code erreur: 2
user1
user2
user3
./tt.sh: ligne 25: 6: Mauvais descripteur de fichier
./tt.sh: ligne 27: 5: Mauvais descripteur de fichier
Dernière erreur : dimanche 27 mai 2012, 12:39:24 (UTC+0200) dans le ./tt.sh: ligne 27: code erreur: 1
~$ cat erreur.log 
~$ cat trace.log 
~$ 

merci

Hors ligne

#2 Le 27/05/2012, à 12:50

altair8080

Re : PB : STDOUT et STDERR dans 2 fichiers logs <> et une sortie terminal

complément :
je pense que pour les erreurs sur les descripteurs, il ne faut pas mettre en dernière ligne
"exit_handler" mais juste "exit"

reste toujours le problème de sauvegarde en parallèle dans les fichiers et affichage à l'écran

Hors ligne

#3 Le 28/05/2012, à 12:35

credenhill

Re : PB : STDOUT et STDERR dans 2 fichiers logs <> et une sortie terminal

hello
essayer en changeant ces 2 lignes exec au début

#!/bin/bash

#redirection STDERR dans un fichier de log et affichage sur le terminal en //
exec 6>&2
exec 2> >(tee erreur.log)
 
#redirection STDOUT dans un fichier de log et affichage sur le terminal en //
exec 5>&1
exec 1> >(tee trace.log)
...

Hors ligne