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 POSIX Discussion :

Shell - Il est où le fils ?


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut Shell - Il est où le fils ?
    Bonjour,

    Un traitement mal fait cherche son nombre de fils, il a toujours fonctionné sur un serveur malgré ses défauts. Exécuter sur un autre serveur plus rien ne va !

    démonstration :

    - serveur 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    root@SERVEUR1:/manip>echo $(ps -ef | grep $$ |grep -v grep| grep 'sh' | awk '{print $3}' | grep $$)
    10 fois de suite aucun resultat ne sort !


    - serveur 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    root@SERVEUR2:/manip>echo $(ps -ef | grep $$ |grep -v grep| grep 'sh' | awk '{print $3}' | grep $$)
    725064
    root@SERVEUR2:/manip>echo $(ps -ef | grep $$ |grep -v grep| grep 'sh' | awk '{print $3}' | grep $$)
    725064
    10 fois de suite toujours le même résultat !


    - serveur 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [SERVEUR3]/manip> echo $(ps -ef | grep $$ |grep -v grep| grep 'sh' | awk '{print $3}' | grep $$)
     
    [SERVEUR3]/manip> echo $(ps -ef | grep $$ |grep -v grep| grep 'sh' | awk '{print $3}' | grep $$)
    2289776
    [SERVEUR3]/manip> echo $(ps -ef | grep $$ |grep -v grep| grep 'sh' | awk '{print $3}' | grep $$)
     
    [SERVEUR3]/manip> echo $(ps -ef | grep $$ |grep -v grep| grep 'sh' | awk '{print $3}' | grep $$)
    Aléatoirement le sous shell apparaît !

    Quelqu'un a une idée d'où cela vient ? (KSH et AIX)

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 357
    Par défaut
    Bonjour,

    Question: Et si tu fais juste un ps -ef, est-ce que tu retrouves bien les process fils sur tout tes serveurs ?

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Pas de pot. Le pid de ton interpreteur est une sous partie d'un autre pid. Que donne la commande echo $$?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut
    Réponses:

    root>ps -ef|grep 729196
    root 729196 725064 0 15:48:58 pts/1 0:00 -ksh
    root 806938 618706 0 15:49:04 pts/3 0:00 grep 729196
    root 946304 729196 0 15:48:58 pts/1 0:00 -ksh
    root 1146944 729196 0 15:48:58 pts/1 0:00 -ksh

    root>echo $$
    618706

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 357
    Par défaut
    Là, je suis perdu, tu fais un grep sur un n° de processus qui ne correspond pas à celui de $$ alors que dans ton post de départ tu ne te base que sur $$.
    Cela manque de cohérence ici... ???

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut
    non c'est une erreur, j'ai répondu de but en blanc a deux questions différentes !

    Si je fais ps -ef, je vois bien les fils comme la capture. Et echo $$ rempli son travail il donne bien le pid !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >echo $$
    5578922
    >ps -ef|grep $$
        root 3895356 5578922   0 16:51:59  pts/1  0:00 grep 5578922
        root 5578922 4280328   0 15:55:44  pts/1  0:00 -ksh
        root 5648636 5578922   0 16:51:59  pts/1  0:00 ps -ef
    >ps -ef|grep $$
        root 5156912 5578922   0 16:52:09  pts/1  0:00 ps -ef
        root 5578922 4280328   0 15:55:44  pts/1  0:00 -ksh
    Même résultat sur chaque serveurs.


    On va simplifier ! pouvez vous m'expliquer se comportement :


    serveur 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    618706
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    618706
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    618706
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)

    Le sous shell apparaît toujours !

    Serveur 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    2289776
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)

    Le sous shell n’apparaît aléatoirement !

    Serveur 3:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    Le sous shell n’apparaît jamais !

  7. #7
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    où il est le fils ? bha en général les fils sont au cul des ordinateurs...
    ok je file ....

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    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 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par MoZeuR Voir le message
    On va simplifier ! pouvez vous m'expliquer se comportement :

    serveur 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    618706
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    618706
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    618706
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)

    Le sous shell apparaît toujours !

    Serveur 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    2289776
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)

    Le sous shell n’apparaît aléatoirement !

    Serveur 3:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
     
    echo $(ps -ef |grep -v grep|awk '{print $3}' | grep $$)
    Le sous shell n’apparaît jamais !
    Salut

    Si tu veux faire un vrai test, je te suggère ceci
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in $(seq 20)
    do
        ps -ef > ps.$i
    done

    Puis charge à toi d'examiner avec attention les fichier ps.1, ps.2, ps.3, ..., ps.20 pour essayer de comprendre pourquoi le pid 2289776 apparait, n'apparait pas ou apparait aléatoirement...
    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]

Discussions similaires

  1. Tester si le node selectionné est un node fils
    Par sihammaster dans le forum VB.NET
    Réponses: 0
    Dernier message: 06/05/2010, 11h44
  2. le changement de shell n'est pas pris en compte
    Par DiverSIG dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 22/02/2010, 15h01
  3. [Xpath] Tester si un noeud est le dernier fils d'un noeud donné
    Par thibaultG dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 08/09/2009, 17h42
  4. Tester si le shell script est lance en background ou pas ?
    Par mhtrinh dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/02/2008, 10h14
  5. [SHELL] Qui est connecté sur ce port
    Par max44410 dans le forum Linux
    Réponses: 3
    Dernier message: 07/05/2007, 01h52

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