Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2006, 13h22   #1
Futur Membre du Club
 
Inscription : mars 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 61
Points : 19
Points : 19
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...
psau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 14h11   #2
Membre confirmé
 
Inscription : octobre 2005
Messages : 344
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 344
Points : 270
Points : 270
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 ?
usf70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 14h26   #3
Membre Expert
 
Avatar de zooro
 
Inscription : avril 2006
Messages : 922
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2006
Messages : 922
Points : 1 149
Points : 1 149
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.
__________________
[alkama] quelqu'un est allé voir la guerre des mondes?
[@Chrisman] j'espère pour spielberg
--- bashfr.org
zooro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 14h26   #4
Futur Membre du Club
 
Inscription : mars 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 61
Points : 19
Points : 19
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...
psau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 14h32   #5
Membre Expert
 
Avatar de zooro
 
Inscription : avril 2006
Messages : 922
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2006
Messages : 922
Points : 1 149
Points : 1 149
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
__________________
[alkama] quelqu'un est allé voir la guerre des mondes?
[@Chrisman] j'espère pour spielberg
--- bashfr.org
zooro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 15h25   #6
Futur Membre du Club
 
Inscription : mars 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 61
Points : 19
Points : 19
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.
psau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2006, 00h21   #7
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
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
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2006, 13h50   #8
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
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.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2006, 18h22   #9
Futur Membre du Club
 
Inscription : mars 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 61
Points : 19
Points : 19
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> ?
psau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 15h42   #10
Futur Membre du Club
 
Inscription : mars 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 61
Points : 19
Points : 19
Poursuivant mes investigations j'ai remarqué ceci :
la commande
Code :
1
2
 
var=`ps -e | grep toto`
ajoute un défunct à la table des processus.
Un avis sur la question ??
psau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2006, 15h44   #11
Membre éprouvé
 
Avatar de _shuriken_
 
Homme
Consultant telecoms
Inscription : mars 2006
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

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

Informations forums :
Inscription : mars 2006
Messages : 426
Points : 410
Points : 410
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
__________________
"When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

Lord Kelvin - 1883.
_shuriken_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2006, 17h18   #12
Futur Membre du Club
 
Inscription : mars 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 61
Points : 19
Points : 19
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>.
psau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2006, 00h43   #13
Membre éprouvé
 
Avatar de _shuriken_
 
Homme
Consultant telecoms
Inscription : mars 2006
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

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

Informations forums :
Inscription : mars 2006
Messages : 426
Points : 410
Points : 410
Voila une connaissance en plus, merciii
__________________
"When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

Lord Kelvin - 1883.
_shuriken_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2008, 15h47   #14
Membre Expert
 
Avatar de SnakemaN
 
Bidouille-tout Android
Inscription : juillet 2006
Messages : 871
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Bidouille-tout Android

Informations forums :
Inscription : juillet 2006
Messages : 871
Points : 1 102
Points : 1 102
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
__________________
C'est le signe d'un fou, qu'avoir honte d'apprendre
Ubuntu 10.04 Lucid Lynx @home
LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu
SnakemaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2009, 20h08   #15
Membre confirmé
 
Inscription : août 2008
Messages : 241
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2008
Messages : 241
Points : 221
Points : 221
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é.
ptyxs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h56.


 
 
 
 
Partenaires

Hébergement Web