Lorsqu'un processus se comporte mal, vous pouvez parfois vouloir le terminer ou le tuer. Dans cet article, 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.
Utilisation des caractères de ligne de commande/terminaison
Ctrl + C
Un problème lors de l'appel de gedit depuis la ligne de commande (si vous n'utilisez pas gedit & ) est qu'il 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') est pratique. Cela mettra fin à gedit et tout le travail sera perdu (sauf si le fichier a été enregistré). Ctrl+C envoie le SIGINT signaler à gedit . Il s'agit d'un signal d'arrêt dont l'action par défaut est de terminer le processus. Il demande au shell d'arrêter gedit et revenez à la boucle principale, et vous récupérerez l'invite.
$ gedit
^C
Ctrl + Z
C'est ce qu'on appelle un caractère suspendu . Il envoie un SIGTSTP signal à traiter. 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 (tuera/terminera) gedit et renvoyez l'invite du shell.
$ gedit
^Z
[1]+ Stopped gedit
$
Une fois le processus 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 les jobs commande.
$ jobs
[1]+ Stopped gedit
jobs vous permet de contrôler plusieurs processus au sein d'une même session shell. Vous pouvez arrêter, reprendre et déplacer les travaux en arrière-plan ou au premier plan selon vos besoins.
Reprenons gedit en arrière-plan et libérez une invite pour exécuter d'autres commandes. Vous pouvez le faire en utilisant le bg commande, suivi de l'ID du travail (notez [1] à partir de la sortie de jobs au dessus de. [1] est l'ID du travail).
$ bg 1
[1]+ gedit &
Ceci est similaire au démarrage de gedit avec &, :
$ gedit & Utiliser tuer
kill permet un contrôle précis 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 d'un PID.
Ce que j'aime chez kill est qu'il peut également fonctionner avec des ID de travail. Commençons gedit en arrière-plan en utilisant gedit & . En supposant que j'ai un ID de travail de gedit à partir des jobs commande, envoyons SIGINT à gedit :
$ kill -s SIGINT %1
Notez que l'ID de tâche doit être précédé de % , ou kill le considérera comme un PID.
kill peut fonctionner sans spécifier explicitement un signal. Dans ce cas, l'action par défaut est d'envoyer SIGTERM , ce qui mettra fin au processus. Exécutez kill -l pour lister tous les noms de signaux et utiliser le man kill commande pour lire la page de manuel.
Utiliser killall
Si vous ne souhaitez pas spécifier d'ID de tâche ou de PID, killall vous permet de spécifier un processus par son nom. Le moyen le 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 la possibilité d'ignorer la casse en utilisant -I :
$ gedit &
[1] 14852
$ killall -I GEDIT
[1]+ Terminated gedit
Pour en savoir plus sur les différents drapeaux fournis par killall (comme -u , qui vous permet de tuer les processus appartenant à l'utilisateur) consultez la page de manuel (man killall )
Utiliser xkill
Avez-vous déjà rencontré un problème où un lecteur multimédia, tel que VLC, est grisé ou bloqué ? Vous pouvez maintenant trouver le PID et tuer l'application à l'aide de l'une des commandes répertoriées ci-dessus ou utiliser xkill .

xkill permet de tuer une fenêtre à l'aide d'une souris. Exécutez simplement xkill dans un terminal, ce qui devrait changer le curseur de la souris en un x ou une petite icône de crâne. Cliquez sur x sur la fenêtre que vous souhaitez fermer. Soyez prudent en utilisant xkill , cependant, comme l'explique sa page de manuel, cela peut être dangereux. Vous êtes prévenu !
Reportez-vous à la page de manuel de chaque commande pour plus d'informations. Vous pouvez également explorer des commandes telles que pkill et pgrep .