Contenu | Rechercher | Menus

Annonce

Le forum rencontre en ce moment quelques soucis de charge, il est possible qu'une erreur soit affichée quand vous postez un message, ne rechargez pas la page au risque de poster une seconde fois votre message

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

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

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

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

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

Haut de page ↑