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 le processus shell !


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé Avatar de miss_angel
    Inscrit en
    Février 2008
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 210
    Par défaut Tuer le processus shell !
    Bonjour à tous,

    J'ai testé la commande kill sur un simple processus gedit lancé en tâche de fond (gedit &), en tapant kill PID_de_Gedit, ça marche et le gedit disparait!
    Mais en essayant de faire la même chose avec le processus shell (bash), kill PID_bash, ça se tue pas... Mais en forçant avec le signal SIGKILL (-9) ça disprait.
    Ma question est pourquoi le processus de shell ne se tue pas avec un simple kill, alors que le gedit disparait avec un simple kill?

    Merci d'avance!

  2. #2
    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
    Par défault, le shell ignore le signal SIGTERM, qui est celui envoyé par défaut par kill.

    Tu peux modifier son comportement, par exemple avec cette commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trap 'echo ouch;sleep 2;exit' SIGTERM
    kill -9 envoie SIGKILL qui ne peut être ignoré par un processus. Ce signal ne doit être utilisé qu'en dernier recours.

    Si tu veux interrompre le shell sans le tuer, tu peux envoyer SIGINT, qui est l'équivalent de Control-C:


  3. #3
    Membre confirmé Avatar de miss_angel
    Inscrit en
    Février 2008
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 210
    Par défaut
    Cher jlliagre, merci bien pour votre réponse
    C'est un peu clair maintenant mais pourquoi ce signal SIGTERM, qui est envoyé par défaut par kill marche avec le processus "gedit" et pas avec le processus de "shell"? est ce qu'il y a des différences entre les processus? si oui qu'est ce qui distingue le shell des autres processus?

    Merci d'avance ^^

  4. #4
    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
    Ce sont des choix d'implémentation. Les développeurs sont libres de créer des programmes qui ignorent ou non certains signaux.

  5. #5
    Membre confirmé Avatar de miss_angel
    Inscrit en
    Février 2008
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 210
    Par défaut
    merci bien

  6. #6
    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 jlliagre Voir le message

    kill -9 envoie SIGKILL qui ne peut être ignoré par un processus. Ce signal ne doit être utilisé qu'en dernier recours.
    Salut
    Petite précision supplémentaire: lorsque le noyau Unix/Linux reçoit un SIGKILL, il ne le transmet pas au processus concerné mais à l'ordonnaceur des processus (le programme qui active/désactive les différents processus de façon très rapide pour donner l'illusion d'un fonctionnement en parallèle de tous les processus).
    Et donc lorsque cet ordonnanceur reçoit un SIGKILL, il supprime simplement le processus concerné de la liste des processus à faire tourner.
    Ce qui explique pourquoi même si on demande à un processus d'ignorer SIGKILL, cela ne sert à rien...
    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]

  7. #7
    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
    Citation Envoyé par Sve@r Voir le message
    l'ordonnaceur des processus (le programme qui active/désactive les différents processus de façon très rapide pour donner l'illusion d'un fonctionnement en parallèle de tous les processus).
    Ce n'est plus toujours une illusion avec les machines modernes qui disposent de CPUs de plus en plus hyper/multi-threadés, multi-cores, voire de plusieurs CPUs.

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

Discussions similaires

  1. Comment tuer les processus dans l'état sleeping sans EM ?
    Par David Guillouet dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/02/2005, 09h42
  2. Tuer un processus sur une machine distante
    Par nuke_y dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 16/11/2004, 09h55
  3. Comment tuer le processus ez-ipupdate
    Par berry dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 21/06/2004, 15h07
  4. Tuer le processus d'Interbase ?
    Par JezabelleTwin dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/04/2004, 13h09
  5. [VB6] [Système] Tuer un processus courant
    Par mdoyer dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/10/2002, 14h47

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