Accueil
 1  Licence
 2  Prologue
 3  Système d'exploitation, système d'exploitation Unix
 4  Première utilisation
 5  Système de fichiers
 6  Shell
 7  Processus
 7.1  Caractéristiques d'un processus
 7.2  Arborescence des processus
 7.3  Commande ps
 7.4  Commandes pstree et top
 7.5  Processus en avant-plan et en arrière-plan
 7.6  Suspension et reprise d'un processus
 7.7  Suppression d'un processus
 7.8  Vision utilisateur des états d'un processus
 7.9  Shell et processus *
 7.10  Conclusion
 8  Quelques outils supplémentaires
 9  Communications sous Unix
 10  Épilogue: Rappels importants
 Index
 Glossaire
 Foire Aux Questions
 Aide

 Contacts

W3C validator

Département INF  
 Initiation à UNIX


7.7 Suppression d’un processus

  • Généralement un processus se termine à la fin de l’exécution de la dernière instruction; il est alors détruit par le système d’exploitation.
  • Un utilisateur peut terminer un processus en avant-plan en tapant CTRLC.
  • Un utilisateur peut aussi terminer un processus avec la commande kill envoyant un « signal » à un processus.
    • Par défaut, la commande kill envoie le signal 15 de terminaison (SIGTERM).  
      problème génération shellcmds verbatim
    • La commande kill peut aussi forcer la terminaison d’un processus en envoyant le signal 9 de destruction (SIGKILL).  
      problème génération shellcmds verbatim
  • La commande GNU/Linux killall envoie un signal à tous les processus de même nom.
  • Notez que le droit de détruire un processus est réservé à son propriétaire.

    previous     next 


Polycopié de cours Commentaires de cette page dans le polycopié de cours

 
Nous ne pouvons pas proposer d’illustration interactive en mode commande pour la suppression de processus. Veuillez suivre les instructions suivantes:

  • Le cas d’utilisation de suppression d’un processus est très simple et évident à comprendre. Nous avons lancé une commande (par exemple, notre nouveau programme écrit en C qui boucle à l’infini ou la commande sleep 5000). Nous voulons interrompre l’exécution de cette commande « erronée » sans utiliser les touches CTRLC (par exemple, parce que le processus est lancé en arrière-plan).
    • Lançons un processus en arrière-plan: sleep 5000&
      Le processus n’est pas interruptible par la combinaison de touches CTRLC.
    • Obtenons le numéro du processus avec la commande ps
      Le premier champ de la ligne est le numéro de processus (PID). Soit 5543 le numéro du processus.
    • Supprimons le processus avec la commande kill: kill 5543
      Il est possible de fournir plusieurs arguments et ainsi supprimer plusieurs processus en une seule opération.
    • Relançons un processus en arrière-plan: sleep 5000&
    • Le numéro de job est obtenue avec la commande jobs
      Soit 4 le numéro du job de ce processus.
    • Supprimons le processus avec la commande kill %4
      De même, il est possible de fournir plusieurs arguments et ainsi supprimer plusieurs processus en une seule opération.
    • Essayons maintenant de supprimer un processus qui ne nous appartient pas. Cherchons un de ces processus avec la commande ps -ael
      Prenons le processus init de numéro 1.
    • Essayons avec la commande kill 1
      Il est heureux que l’opération ne soit pas permise par un utilisateur autre que le propriétaire. Autrement, nous pourrions agir sur les processus des voisins et les arrêter par exemple (:-().
    • Les pages du manuel en ligne de la commande kill indiquent que par défaut le signal envoyé est le signal SIGTERM (numéro 15) de terminaison. Certaines applications « attrapent » ce signal et ne terminent pas lorsqu’elles le reçoivent. Le signal SIGKILL (numéro 9) force la terminaison. Lançons une dernière fois plusieurs processus en arrière-plan: sleep 5000& puis sleep 5000& et enfin sleep 5000&
      Notez que l’écriture avec des « ; » ne fonctionne pas: vous pouvez essayer
      sleep 5000 ; sleep 5000 ; sleep 5000 &
      La première commande est lancée en avant-plan.
      ou
      sleep 5000 & ; sleep 5000 & ; sleep 5000 &
      Le shell renvoie une erreur de syntaxe avec le « ; ».
    • Soit 3334, 3335 et 3336 les numéros des processus créés. Supprimons le premier processus avec la commande kill en donnant le numéro du signal: kill -9 3334
      Dans la pratique, pour être sûr de supprimer un processus, il est raisonnable d’envoyer le signal numéro 9.
    • Supprimons les processus de nom de commande sleep avec la commande killall: killall sleep
      Tous les processus non suspendus, nous appartenant et de nom de commande sleep sont supprimés.
    • Vérifions qu’il ne reste plus de commande sleep en cours d’exécution avec la commande ps.


Question: Règle des 3 bouées
Auto-évaluation: pas compris pas sûr de comprendre compris

INF, Télécom SudParis, CSC 3001, Sept. 2014