GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was tun, wenn Strg + C einen Prozess nicht beenden kann?

Um das Problem zu verstehen, warum Ctrl + C nicht funktioniert, ist es sehr hilfreich zu verstehen, was passiert, wenn Sie darauf drücken:

Die meisten Shells binden Ctrl + C um "ein SIGINT-Signal an das Programm zu senden, das gerade im Vordergrund läuft". Sie können die verschiedenen Signale über man signal nachlesen:

 SIGINT        2       Term    Interrupt from keyboard

Programme können dieses Signal ignorieren, wie sie auch SIGTSTP ignorieren können:

 SIGTSTP   18,20,24    Stop    Stop typed at tty

(Das machen die meisten Shells, wenn Sie Strg drücken + Z , weshalb es nicht garantiert funktioniert.)

Es gibt einige Signale, die vom Prozess nicht ignoriert werden können:SIGKILL, SIGSTOP und einige andere. Sie können diese Signale über den Kill-Befehl senden. Um also Ihren Hanging / Zombieying-Prozess zu beenden, suchen Sie einfach die Prozess-ID (PID). Verwenden Sie beispielsweise pgrep oder ps und dann kill es:

 % kill -9 PID

Wenn Strg +C (SIGINT) funktioniert nicht, versuchen Sie es mit Ctrl +\ (SIG QUIT). Versuchen Sie dann Strg +Z (SIGTSTP). Wenn Sie zu einem Shell-Prompt zurückkehren, führen Sie kill aus auf der Prozess-ID. (Dies ist standardmäßig das Signal SIGTERM, das Sie mit kill -TERM angeben können . In einigen Shells können Sie möglicherweise %1 verwenden um auf die PID zu verweisen.) Wenn das nicht funktioniert, gehen Sie zu einem anderen Terminal oder einer anderen SSH-Sitzung und führen Sie kill aus oder kill -TERM auf der Prozess-ID. Nur als letztes Mittel solltest du kill -KILL machen , auch bekannt als kill -9 , da es dem Prozess keine Möglichkeit gibt, sauber abzubrechen, seine offenen Dateien zu synchronisieren, seine temporären Dateien zu entfernen, Netzwerkverbindungen zu schließen usw.


Siehe auch diesen Link.

Strg +Z :Prozess anhalten.

Strg +C :den Prozess höflich bitten, jetzt beendet zu werden.

Strg +\ :beendet gnadenlos den gerade im Vordergrund befindlichen Prozess


Linux
  1. Was ist, wenn „kill -9“ nicht funktioniert?

  2. Linux – Wann sollte ich keinen -9 A-Prozess beenden?

  3. Nachkommen verarbeiten?

  4. Was macht ein Programm, wenn es ein Sigkill-Signal sendet?

  5. Wie kann ich einen Prozess anhand des Namens anstelle der PID beenden?

So beenden Sie einen Prozess in Linux

Kill-Befehl unter Linux

Warum kann ich diesen Prozess unter Linux nicht beenden?

Kann jemand im Detail erklären, was set -m tut?

Was ist der Unterschied zwischen kill, pkill und killall?

Kann ein Prozess einen Besitzer haben? Was bedeutet das?