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 :

Trouver le PID des processus enfants d'une application


Sujet :

Administration système

  1. #1
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 891
    Points : 4 157
    Points
    4 157
    Billets dans le blog
    1
    Par défaut Trouver le PID des processus enfants d'une application
    Bonjour,

    pour effectuer des tests automatisés de bon fonctionnement d'une distribution, j'ai réalisé un script qui lance et ferme une à une des applications avec une redirection d'erreur.
    Pour fermer l'application, je la tue par un kill avec son PID tel qu'il est renvoyé par $!.
    Mais certaines applications (des applications python par exemple) lancent elles-même des processus enfants. Mon
    ne ferme donc pas tous les processus de l'application. Il me faut récupérer les PID des processus enfants pour les fermer également.

    J'ai remarqué, en testant en ligne de commande, qu'en tuant le tout dernier processus enfant, cela tuait tous les processus de l'application.

    Mes questions sont donc les suivantes:

    • pouvez-vous me confirmer qu'en toutes circonstances tuer le dernier processus enfant suffit bien à tuer tous les processus de l'application ?
    • Comment récupérer le PID du dernier processus enfant ? Je vois bien une possibilité en l'extrayant de ce que renvoie
      mais existe-t-il une solution plus simple ?


    Merci d'avance pour vos éclairages.
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    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 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Bonjour,

    Pour répondre à la première question, c'est non, tu es sur du cas particulier.

    En principe, si le développeur n'as pas inhibé les signaux, en tuant le père, tu tus les enfants.

    De manière grossière:

    Le père crée un fils via un fork:
    -Le père fait sa vie de son coté
    -Le fils fait sa vie de son coté

    1er cas:
    Le père meurt, il envoie un signal à son fils qui par défaut meurt aussi ou décide d'ignoré son instinct familial et continue à vivre sa vie (on appel ça un petit daemon)

    2eme cas:
    Le fils meurt et dieu, pardon, le noyau envoi une lettre en accusé récéption pour prévenir le père que sont fils est mort. Et tant que le père n'as pas prit connaissance de cette lettre, le fils errera jusqu'à la mort du père entre les 2 mondes en zombi.

    Après le reste, c'est de la gestion au niveau applicatif comme par exemple, un père qui crée un fils qui lui-même crée un fils ingrat...

    Pour la deuxième question, il n'y a pas à ma connaissance de manière de faire toute faite pour récupérer la liste des processus fils.

    D'ailleurs, le fils ingrat d'un fils ne sera pas rattaché au grand père mais à init. Comment faire pour les choper ceux-là ?
    Cordialement.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2014
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 498
    Points : 1 178
    Points
    1 178
    Par défaut
    Pour la réponse a ta deuxième question, la réponse est du coté des cgroups : tu peux retrouver tous les fils même si le père est mort et qu'ils sont rattachés à init.
    Bon le truc c'est que c'est juste une piste que je t'envoie je ne connais pas forcément bien comment marchent les cgroups pour le moment ^^

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur système Linux
    Inscrit en
    Juillet 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Linux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 7
    Points : 13
    Points
    13
    Par défaut
    En réponse a ta question ,
    si tu connais le PID père , tu peux essayer avec
    #lsof -p <PID>

    Ou bien
    #pgrep <nom_du_programme>

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/08/2011, 17h02
  2. affichage des processus enfants
    Par diden138 dans le forum Linux
    Réponses: 8
    Dernier message: 05/01/2008, 16h40
  3. Obtenir la liste des processus tournant sous une base oracle
    Par mikawell3000 dans le forum Oracle
    Réponses: 8
    Dernier message: 26/07/2007, 15h18
  4. Où trouver des images PNG pour une application ?
    Par Pythonesque dans le forum Imagerie
    Réponses: 5
    Dernier message: 10/07/2007, 14h44
  5. Réponses: 9
    Dernier message: 25/07/2006, 10h18

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