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

Administration système Discussion :

/dev/tty ou /dev/pts/n ?


Sujet :

Administration système

  1. #1
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut /dev/tty ou /dev/pts/n ?
    Bonjour à tous.

    Dans un script KSH, j'utilise la commande tee pour afficher sur le terminal et loguer les messages affichés sur la sortie standard de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande | tee -a monfichier.log
    Jusqu'ici tout va bien, ça marche. Maintenant, compliquons un peut les choses : je voudrais pourvoir savoir quand "commande" echoue en vérifiant l'exit code ($?). Seul souci : comme j'utilise un pipe (|), l'exit code que je peut tester, c'est celui de tee qui vaut toujours 0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    commande | tee -a monfichier.log
    # Vaut toujours 0
    echo $?
    D'où la question : comment faire, donc, pour récupérer l'exit code de "commande" ?

    J'ai trouvé une solution en utilisant les coprocesses, mais j'aimerais votre avis : je lance tee en coprocess sur lequel je redirige ma commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tee -a monfichier.log |&
    commande >&p
    En l'état, je n'ai que la moitié des choses, à savoir le fichier de logs : tee n'affiche plus rien sur le terminal. Du coup, j'ai complété ma commande tee pour rediriger la sortie standard vers /dev/tty :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tee -a monfichier.log > /dev/tty |&
    commande >&p
    Ca marche super, mais je trouve ça limite : y a-t-il des effets non désirés ou non désirables à utiliser /dev/tty ? Pourquoi ne pas utiliser plutôt /dev/pts/n (i.e. ce qui est renvoyé par la commande tty) ?

    Votre avis m'intéresse : pour /dev/tty, tapez 1, pour /dev/pts/n, tapez 2, pour autre chose, tapez 3. Clic non surtaxé, coût de la connexion non remboursé.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 322
    Points : 211
    Points
    211
    Par défaut
    moi je vote pour /dev/tty

  3. #3
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut
    Le plus simple serai pas d' utiliser $TTY ?
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Cette variable n'existe pas sur mes OS (RHEL 3 et AIX)

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Je viens d'essayer un truc vite fait (sous BASH, désolé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [dschris@mastaba tmp]$ cat c.sh
    #!/bin/bash
    echo -e "this\nis\nsome\noutput"
    exit 1
    [dschris@mastaba tmp]$ ( tee -a c.sh.log ) | ( ./c.sh ) || echo "ERREUR"
    this
    is
    some
    output
     
    ERREUR
    [dschris@mastaba tmp]$
    Le défault, c'est qu'il faut faire un CTRL+C pour arrêter tee...
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Autre essai (que je préfère) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [dschris@mastaba tmp]$ mkfifo fifo.$$
    [dschris@mastaba tmp]$ tee -a c.sh.log <fifo.$$ &
    [1] 24344
    [dschris@mastaba tmp]$ ./c.sh >fifo.$$ || echo "ERREUR"
    this
    is
    some
    output
    ERREUR
    [1]+  Done                    tee -a c.sh.log <fifo.$$
    [dschris@mastaba tmp]$ rm fifo.$$
    Si ça aide, tant mieux, sinon tant pis...
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 36
    Points
    36
    Par défaut J'ai plus simple
    (macommande;EXITCODE=$?)|tee monfichier.log;exit $EXITCODE

Discussions similaires

  1. Disparition de /dev/sde et /dev/sde1 dans /dev pendant la nuit ?
    Par Pierre GIRARD dans le forum Administration système
    Réponses: 3
    Dernier message: 09/03/2015, 16h13
  2. [pvcreate]Différence entre /dev/mapper et /dev/mpath
    Par tck-lt dans le forum Administration système
    Réponses: 3
    Dernier message: 12/06/2012, 14h03
  3. Réponses: 1
    Dernier message: 18/12/2007, 13h50

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