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 :

Nom d'un pipe !


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut Nom d'un pipe !
    Hello !

    Je me pose la question suivante : est il possible de connaître la ligne de commande utilisée "à gauche" d'un pipe quand on est "à droite" ?

    Quelques exemples :
    mon_script.sh | monitor.sh;
    mon_script_2.sh | monitor.sh
    mon_script_3.sh -t 17 | monitor.sh

    Je voudrai que monitor.sh puisse dire quel script a parlé dans son entrée standard (cad mon_script.sh, mon_script_2.sh ou mon_script_3.sh -t 17)

    Déjà, est-ce possible ?
    Ensuite, si oui, comment

    Merci d'avance !!!

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Tlucy Voir le message
    Hello !

    Je me pose la question suivante : est il possible de connaître la ligne de commande utilisée "à gauche" d'un pipe quand on est "à droite" ?

    Quelques exemples :
    mon_script.sh | monitor.sh;
    mon_script_2.sh | monitor.sh
    mon_script_3.sh -t 17 | monitor.sh

    Je voudrai que monitor.sh puisse dire quel script a parlé dans son entrée standard (cad mon_script.sh, mon_script_2.sh ou mon_script_3.sh -t 17)


    Déjà, est-ce possible ?
    Ensuite, si oui, comment

    Merci d'avance !!!
    Salut
    A ma connaissance cela n'est pas possible. Chaque script écrit dans stdout et monitor.sh ne lit que ce qu'il y a dans stdin. Mais les scripts n'ont pas écrit leurs noms dans stdout...
    Peut-être en examinant le dossier /proc...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Voilà ce que tu pourrais mettre au début de monitor.sh pour tenter d'identifier le processus qui écrit dans le pipe.
    Ce n'est pas très robuste car il est possible que le processus de gauche ait déjà terminé son exécution et ne soit donc plus identifiable.
    Avec un processus qui "prends du temps", la ligne de commande doit être affichée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
     
    ppid=$(ps -p $$ -o ppid=)
    sockNum=$(( $(ls -l /proc/$$/fd/0 | grep socket: | sed -e 's/.*socket:\[//' -e 's/\].*$//') + 1 ))
    for i in $(ps -o ppid= -o pid= | awk "\$1 == $ppid"); do
      son=$(ps -o ppid= -o pid= | awk "\$1 == $i")
      [ "$son" ] && {
        for j in $son; do
          [ "$(ls -l /proc/$j/fd/1 | grep $sockNum)" ] && { echo "Command=\"$(ps -p $j -o args=)\"" ; break 2 ; }
        done
      }
    done
    ...
    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ find / | monitor.sh            
    Command="find /"

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut
    Merci !

    Je vais regarder tout ça et voir ce que je peux faire

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonsoir,

    si tu es en maîtrise des deux scripts, tu peux écrire une entête à chaque ligne, en sortie du premier script. Ainsi le second saura trier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [script1] bla bla bla
    [script1] blo blo blo
    [script2] tsouin tsouin
    [script1] bli bli bli
    [script3] tata
    [script2] pouet
    [script3] toto

Discussions similaires

  1. [Humour] Nom d'une pipe !
    Par pc75 dans le forum La taverne du Club : Humour et divers
    Réponses: 45
    Dernier message: 06/09/2007, 15h57
  2. Cherche Nom des touches du clavier
    Par juan64 dans le forum C++Builder
    Réponses: 8
    Dernier message: 23/07/2002, 19h11
  3. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  4. Réponses: 2
    Dernier message: 26/06/2002, 13h16
  5. Connaitre le nom des imprimantes
    Par bastien dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2002, 16h36

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