GNU/Linux >> Tutoriels Linux >  >> Linux

Que faire lorsque Ctrl + C ne peut pas tuer un processus ?

Pour comprendre pourquoi Ctrl + C ne fonctionne pas, il est très utile de comprendre ce qui se passe lorsque vous appuyez dessus :

La plupart des shells lient Ctrl + C pour "envoyer un signal SIGINT au programme qui s'exécute actuellement au premier plan". Vous pouvez en savoir plus sur les différents signaux via man signal :

 SIGINT        2       Term    Interrupt from keyboard

Les programmes peuvent ignorer ce signal, comme ils peuvent également ignorer SIGTSTP :

 SIGTSTP   18,20,24    Stop    Stop typed at tty

(C'est ce que font la plupart des shells lorsque vous appuyez sur Ctrl + Z , c'est pourquoi il n'est pas garanti qu'il fonctionne.)

Certains signaux ne peuvent pas être ignorés par le processus :SIGKILL, SIGSTOP et quelques autres. Vous pouvez envoyer ces signaux via la commande kill. Donc, pour tuer votre processus d'accrochage / zombie, trouvez simplement l'ID de processus (PID). Par exemple, utilisez pgrep ou ps puis kill il :

 % kill -9 PID

Si Ctrl +C (SIGINT) ne fonctionne pas, essayez Ctrl +\ (SIGQUITTER). Ensuite, essayez Ctrl +Z (SIGTSTP). Si cela vous ramène à une invite du shell, faites kill sur l'ID de processus. (Ceci est par défaut le signal SIGTERM, que vous pouvez spécifier avec kill -TERM . Dans certains shells, vous pourrez peut-être utiliser %1 pour faire référence au PID.) Si cela ne fonctionne pas, accédez à un autre terminal ou à une session SSH et faites kill ou kill -TERM sur l'ID de processus. Seulement en dernier recours devriez-vous faire kill -KILL , alias kill -9 , car il ne donne aucune chance au processus d'abandonner proprement, de synchroniser ses fichiers ouverts, de supprimer ses fichiers temporaires, de fermer les connexions réseau, etc.


Voir aussi ce lien.

Ctrl +Z :mettre en pause un processus.

Ctrl +C  :demandez poliment au processus de s'arrêter maintenant.

Ctrl +\ :tue sans pitié le processus qui est actuellement au premier plan


Linux
  1. Que sont les processus zombies et comment trouver et tuer les processus zombies ?

  2. Et si "kill -9" ne fonctionne pas ?

  3. Linux - Quand ne devrais-je pas tuer -9 Un processus ?

  4. Descendants de processus ?

  5. Comment puis-je tuer un processus par nom au lieu de PID?

Comment tuer un processus sous Linux

Commande Kill sous Linux

Que se passe-t-il lorsqu'un thread bifurque ?

Quand ne dois-je pas tuer -9 un processus ?

Quelqu'un peut-il expliquer en détail ce que fait set -m ?

Un processus peut-il avoir un propriétaire ? Qu'est-ce que ça veut dire?