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 :

Tuer un process lancé en & depuis un shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Par défaut Tuer un process lancé en & depuis un shell
    Bonjour,
    Tout d'abord une petite précision, mon pb concerne hp-ux mais je la pose sur ce forum car peut-être est-il le même sous Linux...

    Je lance un programme en arrière plan (&) depuis un shell. Lorsque le shell se termine, le programme en question devient orphelin et il est alors recueilli par init (PPID = 1). Le problème est que si maintenant je tente de le tuer (kill -9) il devient defunct et ne veut plus mourir.

    Merci pour toute suggestion...

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Par défaut
    J'ai bien peur que la seule solution pour killer un tel process soit un reboot ...
    As-tu essayé de le killer à partir de root ?

  3. #3
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Bonjour,
    J'avais eu le même problème sous Redhat 7.1 il y a quelques années. Nous n'avions pas trouvé de solution. Il semble que seul un reboot permette de les éliminer.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Par défaut
    Oui kill -9 sous root : Idem. Le processus devient <defunct>
    Il est tout de même étrange de ne pas pouvoir lancer un programme en & dans un shell et le tuer proprement ensuite...

  5. #5
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    J'ai trouvé une explication:
    Citation Envoyé par Defining Defunct Process in UNIX
    Defining Defunct Process in UNIX
    When a process has forked a child and the child ends, its exit value is stored in the process table and the process table entry is labeled as "defunct" (also called zombie). The parent process has to call wait() to fetch the exit value. When it does, the defunct process disappears from the process table.

    A defunct process is not a real process, just an entry in the process table. They are needed for parent processes to be able to get the exit status from their childs.

    A defunct process takes no resources other than an entry in the process table. This might in time lead to a full process table. When that happens, other processes trying to fork will get error messages.
    Apparemment pas d'autre référence sur DVP.com, excepté dans ce post :http://www.developpez.net/forums/showthread.php?t=81178&highlight=defunct

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Par défaut
    C'est effectivement ce qui ce passe. Et ça paraît logique au vu de ce mécanisme.
    Au bout d'un moment d'utilisation le système n'a plus de place dans la process table et ne peux plus forker...

    Il me faut préciser que ce problème est survenu lors du transfert d'une application d'une machine sur une autre, de type différent mais avec la même version HP-UX 10.20A.
    Sur l'ancienne machnine, un programme lancé en & dans un shell qui se termine ensuite peut être tué sans problème après coup et ne génère pas de <défunct> bien que son PPID soit 1.

  7. #7
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Question bête mais quand tu tape jobs il est pas dans la liste des processus?

    ++
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    Il est deja pas "normal" de lancer une tache en & puis de fermer la session ...... puisque ceci force apparement de manière anormal un changement de process père.
    Normalement ce type de manip ce fait avec la commande :
    nohup
    avant de fermer une session.
    . un process defunct (puis zombie) est un process terminé mais dont le père na pas lut le code retour .
    essaye avec la commande nohup si le sympthome est le même.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Par défaut
    J'y ai cru mais non. avec nohup, ça ne marche pas mieux.

    En fait, il s'agit d'un shell script qui lance en & des démons pour communiquer avec les ports d'un serveur de terminaux. Ce shell peut être lancé plusieurs fois par l'utilisateur. Au démarrage il regarde si des demons sont actif (ps -ef...), les tue (kill), les relance puis se termine. Ce mécanisme fonctionne très bien sur une station "hp 9000/745". Pas de <défuncts> lors du kill. Par contre le même programme, sous la même version hp-ux 10.20A tournant sur une nouvelle station "hp Visualize" provoque la génération de <défunct> à chaque kill.

    N'y a t-il aucun moyen d'exécuter un shell ''ponctuel'' qui lance des programmes en arrière plan et pouvoir tuer ces derniers ensuite sans créer de <defunct> ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Par défaut
    Poursuivant mes investigations j'ai remarqué ceci :
    la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var=`ps -e | grep toto`
    ajoute un défunct à la table des processus.
    Un avis sur la question ??

  11. #11
    Membre éclairé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Par défaut
    Citation Envoyé par buchs
    Question bête mais quand tu tape jobs il est pas dans la liste des processus?

    ++
    Mais non puisque :
    Citation Envoyé par zooro
    A defunct process is not a real process, just an entry in the process table. They are needed for parent processes to be able to get the exit status from their childs.
    Citation Envoyé par psau
    Par contre le même programme, sous la même version hp-ux 10.20A tournant sur une nouvelle station "hp Visualize" provoque la génération de <défunct> à chaque kill
    Je crois que ton problème se trouve à ce niveau. Mais je reste perplexe par contre sur la resolution du problème

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Par défaut
    Problème réglé à propri.
    Il semblerait que la cause était la ligne :
    "ems4:3456:respawn:/etc/opt/resmon/lbin/p_client" dans le fichier /etc/inittab.
    En effet, ce programme n'esiste pas car non installé et je n'avais pas vu l'erreur "respawn too rapidly" au démarrage à cause du passage automatique sous HP-VUE.
    Depuis la mise en commentaire de cette ligne, plus de <defunct>.

  13. #13
    Membre éclairé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Par défaut
    Voila une connaissance en plus, merciii

  14. #14
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Tant qu'on y est je viens de rencontrer des zombies moi aussi , j'ai cherché mais trouvé la réponse entre temps donc je la met aussi :

    pour voir la dépendance des processus, si trop long,

    et il suffit de killer la racine (kill -9 xxx ) sauf si c'est le process 0 bien sur

  15. #15
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    Je tombe sur cette discussion et je m'étonne : il y a une solution tout ce qu'il y a de simple :
    lancer la commande

    où n est le numéro du job en arrière-plan à tuer, numéro qu'on obtient par la commande :

    EDIT : Lu trop vite ! Le problème posé dans le premier message était (beaucoup) plus compliqué.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/11/2014, 11h57
  2. Transmettre des commandes à un process lancé par ksh
    Par jojolepabo dans le forum Linux
    Réponses: 3
    Dernier message: 19/10/2005, 16h05
  3. tuer un process
    Par alaparra dans le forum Windows
    Réponses: 3
    Dernier message: 31/05/2005, 20h20
  4. [BATCH] Comment tuer un process ?
    Par tonf dans le forum Windows
    Réponses: 8
    Dernier message: 08/03/2005, 15h48
  5. [Kill]tuer un process
    Par parisjohn dans le forum C
    Réponses: 9
    Dernier message: 27/08/2004, 14h26

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