Je sais qu'il y a ctrl+ c, mais parfois cela ne fonctionne pas. Dans le bureau Ubuntu, je peux simplement fermer la fenêtre du terminal et en ouvrir une nouvelle lorsque cela se produit, mais comment cela pourrait-il être résolu en utilisant la CLI sur le serveur Ubuntu (sans redémarrer la boîte)?
11
Réponses:
CTRL+Cenverra
SIGINT
à l'application. L'application peut configurer un gestionnaire pour ce signal ou ignorer le signal. Par défaut, il n'y a pas de gestionnaire etSIGINT
tuera l'application.Vous pouvez utiliser CTRL+\qui enverra
SIGQUIT
. Cela générera également un vidage de mémoire si la limite de mémoire n'est pas nulle.Vous pouvez suspendre le processus et revenir au shell avec CTRL+Z, cela arrêtera l'exécution du processus et reviendra à l'invite du shell. Le processus sera en mémoire et sera disponible en tant que travail dans le shell actuel. Vous pouvez ensuite utiliser
kill -SIGNAL %%
oukill -SIGNAL %<job_ID>
pour envoyer un signal à ce travail. Par exemple pour tuer la dernière utilisation du travailkill -9 %%
Si aucun d'entre eux ne fonctionne, vous pouvez toujours envoyer
SIGTERM
, en dernier recours,SIGKILL
ce qui mettra fin à tout processus. Ce signal, comme tout autre signal, doit être envoyé en tant que même utilisateur que le processus que vous essayez d'arrêter ou en tant que root. Pour envoyerSIGKILL
au processus, recherchez d'abord le processus avecps aux
oups -edf
, puis exécutezkill -SIGKILL <process_ID>
, où<process_ID>
est laPID
colonne enps
sortie.Les signaux ne peuvent pas être délivrés si le processus est dans un appel ininterrompu. Les appels sans interruption sont des fonctions du noyau qui ne peuvent pas être arrêtées et se produisent généralement à cause d'un mauvais pilote (par exemple un pilote qui n'est pas réentrant ). Un processus en veille sans interruption ne peut pas être arrêté tant que l'appel n'est pas terminé ou que le serveur n'est pas redémarré.
Si un processus devient un zombie , il n'utilisera aucune ressource prenant seulement de l'espace dans la table de processus. Un processus zombie ne peut pas recevoir de signaux.
La liste des signaux pour l'architecture actuelle peut être trouvée avec
kill -l
Voir les pages de manuel de
kill
,ps
etbash
. Pour voir une page de manuel, utilisez quelque chose comme:man ps
la source
Si vous avez un accès complet à la console, vous pouvez le faire Alt- F1..12et obtenir une nouvelle console.
De là, vous pouvez faire une liste de processus comme suit:
Ensuite, faites un
kill
sur l'ID de processus:Si vous ne disposez pas d'un accès complet à la console, ouvrez simplement une autre fenêtre de terminal (peut-être via PuTTY ou similaire), et effectuez la liste de processus ci-dessus et supprimez les étapes.
la source
Ctrl C envoie un SIGINT à votre processus en cours. Si vous ne voulez pas ouvrir une autre console, vous pouvez envoyer un SIGQUIT avec Ctrl \. Cela s'adressera à la plupart des applications suspendues quotidiennes que SIGINT ne fait pas.
J'ai personnellement voulu un moyen d'envoyer un SIGKILL avec un raccourci mais je ne suis pas au courant d'un moyen de le faire.
la source
Je considère
pgrep
etpkill
être plus facile à utiliserkill
qu'avec un ID de processus explicite.De plus, au lieu de commencer par le signal 9 (SIGKILL), envisagez de commencer par le SIGTERM (15) par défaut. Cela donnera au processus une chance de se terminer avec élégance (si c'est possible).
pkill -15 thing
etpkill thing
devrait être équivalent.Voici comment cela fonctionnerait. Disons que ntpd est bloqué.
Quels sont les processus? (Vous pouvez passer à pkill si vous pensez que vous n'aurez pas de faux positifs).
Tuez les processus:
Utilisez à
pgrep
nouveau pour voir s'il a réussi.Sinon, passez éventuellement à
pkill -9
.la source
Vous devez basculer vers un nouveau terminal, trouver le PID du processus bloqué (en utilisant
ps
), puis utiliserkill
pour tuer le processus. J'utiliserais d'abordkill (PID)
. Si cela ne fonctionne pas, j'utiliseraiskill -9 (PID)
. Si cela n'arrête pas le processus, la machine doit être redémarrée.la source
Cntrl+ a \travaillé pour moi (où Cntrl+ cou zn'a pas fonctionné)
la source