IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Redirection à l'écran et dans fichier de log


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 164
    Par défaut Redirection à l'écran et dans fichier de log
    Bonjour,

    ma question est toute bête mais je ne trouve pas de solution. Je lance un script bash (.sh) et j'ai des écritures à l'écran (echo), je souhaite conserver ce fonctionnement mais en plus écrire ce qui s'affiche à l'écran dans un fichier de log.

    Comment faire ?


    Merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    d'abord,
    man tee
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 164
    Par défaut
    Merci. Je viens de regarder et de tester ça fonctionne. Par contre ça ne répond pas exactement à mon besoin.

    Je ne peux pas ajouter "| tee monfichier.log" après ma commande shell. Il faudrait que la redirection se fasse dans le script.

    J'ai trouvé cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    exec 6>&1
    exec >> monfichier.log
    exec 2>> monfichier.log
    [...]
    exec 1>&6 6>&- 
    cat monfichier.log

    mais j'aimerais que la log s'affiche au fur et à mesure et pas en entier à la fin.

  4. #4
    Membre éprouvé Avatar de RaphaelG
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2016
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2016
    Messages : 94
    Par défaut
    Tu peux utiliser "tee -a" (a comme append) à l'intérieur de ton script.
    A chaque fois qu'il y a : Tu remplaces par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo toto | tee -a monfichier.log

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Je ne peux pas ajouter "| tee monfichier.log" après ma commande shell.
    pourquoi ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 164
    Par défaut
    Mon schell est lancé via un ordonnanceur et mon fichier de log est calculé dans le script lui même (en fonction de l'environnement etc.).

    Mais ton idée du tee avec le commentaire de RaphaelG m'a donné la solution.

    J'ai une fonction unique dans tous mes scripts qui fait les echo, j'ai ajouté le tee à cet endroit et ça fonctionne parfaitement.

    Merci à tous les deux.

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par Darkcristal Voir le message
    J'ai trouvé cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    exec 6>&1
    exec >> monfichier.log
    exec 2>> monfichier.log
    [...]
    exec 1>&6 6>&- 
    cat monfichier.log
    mais j'aimerais que la log s'affiche au fur et à mesure et pas en entier à la fin.
    Juste à titre indicatif, la méthode classique pour que le fichier de log s'affiche au fur et à mesure consiste à utiliser "tail -f":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ma_commande > fichier/de/log 2>&1 & # En background pour récupérer la main
    tail -f fichier/de/log
    Ensuite, on peut contrôler le flux avec les "commandes" Xoff/stop/Ctrl-s et Xon/start/Ctrl-Q

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ stty -a
    ...
    cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
    	eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
    	min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    	stop = ^S; susp = ^Z; time = 0; werase = ^W;
    Mais on peut aussi utiliser "more" (ou "less"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ma_commande > fichier/de/log 2>&1 & # En background pour récupérer la main
    tail -f fichier/de/log | less
    (il me semble que, suivant les systèmes, ça n'avance pas toujours en continu. Parfois, il faut une page entière d'avance pour avoir l'affichage, mais pas la totalité du fichier)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/02/2011, 19h03
  2. Filtrer ligne dans fichier de log
    Par xian21 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 13/10/2009, 13h42
  3. [log4j] Affichage dans fichier de log
    Par wystan dans le forum Logging
    Réponses: 3
    Dernier message: 20/04/2009, 11h20
  4. Erreurs dans fichier de log
    Par guappi dans le forum Administration
    Réponses: 10
    Dernier message: 25/09/2007, 16h26
  5. écrire dans fichier de log d'apache
    Par benkunz dans le forum Langage
    Réponses: 2
    Dernier message: 05/04/2007, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo