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
.