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