Comment tuer un processus ou arrêter un programme sous Linux

Lorsqu’un processus se comporte mal, vous pouvez parfois vouloir le terminer ou le tuer. Dans ce post, nous allons explorer quelques façons de terminer un processus ou une application à partir de la ligne de commande ainsi que d’une interface graphique, en utilisant gedit comme exemple d’application.

Utiliser la ligne de commande/les caractères de terminaison

Ctrl + C

Un problème d’invoquer gedit à partir de la ligne de commande (si vous n’utilisez pas gedit &) est que cela ne libérera pas l’invite, de sorte que la session shell est bloquée. Dans de tels cas, Ctrl+C (la touche Contrôle en combinaison avec ‘C’) s’avère pratique. Cela mettra fin à gedit et tout le travail sera perdu (sauf si le fichier a été sauvegardé). Ctrl+C envoie le signal SIGINT à gedit. C’est un signal d’arrêt dont l’action par défaut est de terminer le processus. Il ordonne au shell d’arrêter gedit et de retourner à la boucle principale, et vous récupérerez l’invite.

$ gedit
^C

Ctrl + Z

C’est ce qu’on appelle un caractère de suspension. Il envoie un signal SIGTSTP au processus. C’est aussi un signal d’arrêt, mais l’action par défaut n’est pas de tuer mais de suspendre le processus.

Il arrêtera (tuer/terminer) gedit et retournera l’invite du shell.

$ gedit
^Z
+ Stopped gedit
$

Une fois que le processus est suspendu (dans ce cas, gedit), il n’est pas possible d’écrire ou de faire quoi que ce soit dans gedit. En arrière-plan, le processus devient un travail. Cela peut être vérifié par la commande jobs.

$ jobs
+ Stopped gedit

jobs vous permet de contrôler plusieurs processus dans une seule session shell. Vous pouvez arrêter, reprendre et déplacer les travaux en arrière-plan ou au premier plan selon les besoins.

Reprenons gedit en arrière-plan et libérons une invite pour exécuter d’autres commandes. Vous pouvez le faire en utilisant la commande bg, suivie de l’ID du travail (remarquez dans la sortie de jobs ci-dessus. est l’ID du travail).

$ bg 1
+ gedit &

C’est similaire au démarrage de gedit avec &,:

 $ gedit &

L’utilisation de kill

kill permet un contrôle fin des signaux, vous permettant de signaler un processus en spécifiant soit un nom de signal, soit un numéro de signal, suivi d’un ID de processus, ou PID.

Ce que j’aime de kill, c’est qu’il peut également fonctionner avec des ID de travail. Démarrons gedit en arrière-plan en utilisant gedit &. En supposant que j’ai un ID de travail de gedit à partir de la commande jobs, envoyons SIGINT à gedit:

 $ kill -s SIGINT %1

Notez que l’ID de travail doit être préfixé par %, ou kill le considérera comme un PID.

kill peut fonctionner sans spécifier un signal explicitement. Dans ce cas, l’action par défaut est d’envoyer SIGTERM, qui terminera le processus. Exécutez kill -l pour lister tous les noms de signaux, et utilisez la commande man kill pour lire la page de manuel.

Utilisation de killall

Si vous ne voulez pas spécifier un ID de travail ou un PID, killall vous permet de spécifier un processus par son nom. La façon la plus simple de terminer gedit en utilisant killall est:

 $ killall gedit

Cela tuera tous les processus avec le nom gedit. Comme kill, le signal par défaut est SIGTERM. Il a l’option d’ignorer la casse en utilisant -I:

$ gedit &
14852
$ killall -I GEDIT
+ Terminated gedit

Pour en savoir plus sur les différents drapeaux fournis par killall (tels que -u, qui vous permet de tuer les processus appartenant à l’utilisateur), consultez la page de manuel (man killall)

Utilisation de xkill

Avez-vous déjà rencontré un problème où un lecteur multimédia, tel que VLC, a grisé ou s’est bloqué ? Maintenant, vous pouvez trouver le PID et tuer l’application en utilisant l’une des commandes énumérées ci-dessus ou utiliser xkill.

xkill vous permet de tuer une fenêtre en utilisant une souris. Exécutez simplement xkill dans un terminal, ce qui devrait changer le curseur de la souris en un x ou une minuscule icône de crâne. Cliquez sur x sur la fenêtre que vous voulez fermer. Soyez prudent en utilisant xkill, cependant – comme l’explique sa page de manuel, il peut être dangereux. Vous avez été prévenu !

Référez-vous à la page de manuel de chaque commande pour plus d’informations. Vous pouvez également explorer des commandes comme pkill et pgrep.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.