103 votes

Tuer un processus en bash

Comment tuer un processus qui s'exécute en bash - par exemple, supposons que j'ouvre un fichier :

$ gedit file.txt

y a-t-il un moyen dans l'invite de commande de le fermer ? Cet exemple est assez trivial, puisque je pourrais simplement fermer la fenêtre, mais il semble se poser un peu, notamment lorsque je tape des commandes de manière incorrecte.

Existe-t-il également un moyen d'échapper à un exécutable en cours d'exécution ? Cela a probablement la même solution, mais je préférais poser la question quand même.

Merci

97voto

tanascius Points 22712

Vous avez plusieurs options :

Tout d'abord, vous pouvez utiliser kill. Mais vous avez besoin de l'identifiant pid de votre processus, que vous pouvez obtenir en utilisant ps, pidof ou pgrep.

ps -A  // pour obtenir le pid, peut être combiné avec grep
-ou-
pidof 
-ou-
pgrep 

kill 

Il est possible de tuer un processus en connaissant simplement son nom. Utilisez pkill ou killall.

pkill 
-ou-
killall 

Toutes les commandes envoient un signal au processus. Si le processus est bloqué, il peut être nécessaire d'envoyer un sigkill au processus (c'est le signal numéro 9, donc les exemples suivants font la même chose) :

pkill -9 
pkill -SIGKILL 

Vous pouvez également utiliser cette option avec kill et killall.

Lisez cet article sur le contrôle des processus pour obtenir plus d'informations sur les processus en général.

93voto

jweyrich Points 10002

Pour l'interrompre, vous pouvez essayer d'appuyer sur ctrl c pour envoyer un SIGINT. Si cela ne l'arrête pas, vous pouvez essayer de le tuer en utilisant kill -9 , ce qui envoie un SIGKILL. Ce dernier ne peut pas être ignoré/intercepté par le processus lui-même (celui en train d'être tué).

Pour déplacer le processus actif en arrière-plan, vous pouvez appuyer sur ctrl z. Le processus est envoyé en arrière-plan et vous revenez à l'invite de commandes. Utilisez la commande fg pour faire l'opposé.

10voto

Liam Points 3058

Essayer tuer -9 {processID}

Pour trouver l'identifiant du processus, vous pouvez utiliser ps -ef | grep gedit

5voto

Ian Points 5

Ancien article, mais je viens de rencontrer un problème très similaire. Après quelques expériences, j'ai découvert que vous pouvez le faire avec une seule commande :

kill $(ps aux | grep  | grep -v "grep" | cut -d " " -f2)

Dans le cas de l'OP, serait "gedit file.txt".

4voto

Yannuth Points 51

Celui-ci est violent à utiliser avec prudence :

pkill -9 -e -f nomduprocessus 

Si votre nom de processus est "sh", il tuera également "bash"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X