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
.