Un processus se termine généralement à 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 vouloir supprimer le processus avant l’exécution de la dernière instruction, par exemple, pour arrêter un programme qui boucle. Si le processus s’exécute en avant-plan, l’utilisateur peut taper CTRLC et ainsi terminer le processus. Il peut aussi utiliser la commande kill envoyant un « signal » à un processus. Vous verrez plus en détail la notion de signal dans le cours d’architecture matérielle et logicielle. La commande kill permet à l’utilisateur de terminer un processus. Cette commande prend en argument un numéro de signal et le numéro (PID) du processus. Par défaut (c’est-à-dire si le signal n’est pas précisé), la commande kill envoie le signal 15 de terminaison (appelé SIGTERM) au processus.  
problème génération shellcmds verbatim

Ce signal SIGTERM entraîne le plus souvent l’arrêt du processus. Si le processus ne se termine pas, l’envoi du signal 9 (SIGKILL) grâce à l’option -9 forcera la terminaison.  
problème génération shellcmds verbatim

Pour connaître la liste des signaux, il faut utiliser l’option -l.  
problème génération shellcmds verbatim

Il est possible de donner un numéro de job au lieu d’un numéro de processus. Rappelez-vous que pour connaître le numéro de job, vous pouvez utiliser la commande jobs. Dans ce cas, le numéro de job, argument de la commande kill est précédé du caractère « % ».  
problème génération shellcmds verbatim

Il existe enfin la commande GNU/Linux killall. Cette commande permet de supprimer tous les processus ayant le même nom. Dans l’exemple suivant, on utilise la commande sleep. La commande sleep permet de faire une pause pendant un certain nombre de secondes. Cette commande est souvent utilisée pour introduire une temporisation entre deux commandes successives. Dans l’exemple, trois processus exécutant sleep pour une durée longue, de 5000 secondes sont créés. En utilisant la commande killall, ces trois processus sont supprimés.

 
problème génération shellcmds verbatim

Le droit de détruire un processus est réservé à son propriétaire. Naturellement, le super-utilisateur peut détruire n’importe quel processus.

 
 
Retour à la page de cours