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

So beenden Sie einen Prozess oder stoppen ein Programm in Linux

Wenn sich ein Prozess schlecht verhält, möchten Sie ihn vielleicht manchmal beenden oder beenden. In diesem Beitrag werden wir einige Möglichkeiten zum Beenden eines Prozesses oder einer Anwendung sowohl von der Befehlszeile als auch von einer grafischen Oberfläche aus untersuchen, wobei gedit als Beispielanwendung verwendet wird.

Verwenden der Befehlszeile/Abschlusszeichen

Strg + C

Ein Problem beim Aufrufen von gedit von der Kommandozeile (wenn Sie gedit & nicht verwenden ) ist, dass die Eingabeaufforderung nicht freigegeben wird, sodass die Shell-Sitzung blockiert wird. In solchen Fällen ist Strg+C (die Strg-Taste in Kombination mit 'C') praktisch. Dadurch wird gedit beendet und alle Arbeiten gehen verloren (es sei denn, die Datei wurde gespeichert). Strg+C sendet den SIGINT Signal an gedit . Dies ist ein Stoppsignal, dessen Standardaktion darin besteht, den Prozess zu beenden. Es weist die Shell an, gedit zu stoppen und kehren Sie zur Hauptschleife zurück, und Sie erhalten die Eingabeaufforderung zurück.

$ gedit
^C

Strg + Z

Dies wird als Unterbrechungszeichen bezeichnet . Es sendet ein SIGTSTP Signal zur Bearbeitung. Dies ist auch ein Stoppsignal, aber die Standardaktion ist nicht das Beenden, sondern das Anhalten des Prozesses.

Es wird gedit stoppen (beenden/beenden). und den Shell-Prompt zurückgeben.

   $ gedit
   ^Z
   [1]+  Stopped                 gedit
   $

Sobald der Prozess ausgesetzt wird (in diesem Fall gedit ), ist es nicht möglich, in gedit zu schreiben oder irgendetwas zu tun . Im Hintergrund wird der Prozess zu einem Job . Dies kann durch die jobs überprüft werden Befehl.

  $ jobs
  [1]+  Stopped                 gedit

Jobs ermöglicht es Ihnen, mehrere Prozesse innerhalb einer einzigen Shell-Sitzung zu steuern. Sie können Jobs nach Bedarf anhalten, fortsetzen und in den Hintergrund oder Vordergrund verschieben.

Lassen Sie uns gedit fortsetzen im Hintergrund und geben Sie eine Eingabeaufforderung frei, um andere Befehle auszuführen. Sie können dies mit dem bg tun Befehl, gefolgt von der Job-ID (beachten Sie [1] aus der Ausgabe von jobs Oben. [1][code> ist die Job-ID).

   $ bg 1
   [1]+ gedit &

Dies ähnelt dem Starten von gedit mit &, :

   $ gedit &

Mit Kill

töte ermöglicht die Feinsteuerung von Signalen und ermöglicht es Ihnen, einen Prozess zu signalisieren, indem Sie entweder einen Signalnamen oder eine Signalnummer angeben, gefolgt von einer Prozess-ID oder PID.

Was ich an kill mag ist, dass es auch mit Job-IDs arbeiten kann. Lassen Sie uns gedit starten im Hintergrund mit gedit & . Angenommen, ich habe eine Job-ID von gedit aus den jobs Befehl senden wir SIGINT zu gedit :

   $ kill -s SIGINT %1

Beachten Sie, dass der Job-ID % vorangestellt werden sollte , oder kill wird es als PID betrachten.

töte kann ohne explizite Angabe eines Signals funktionieren. In diesem Fall ist die Standardaktion das Senden von SIGTERM , wodurch der Vorgang beendet wird. Führen Sie kill -l aus um alle Signalnamen aufzulisten, und verwenden Sie den man kill Befehl zum Lesen der Manpage.

Mit killall

Wenn Sie keine Job-ID oder PID angeben möchten, killall lässt Sie einen Prozess nach Namen spezifizieren. Der einfachste Weg, gedit zu beenden mit killall ist:

   $ killall gedit

Dadurch werden alle Prozesse mit dem Namen gedit beendet . Wie kill , das Standardsignal ist SIGTERM . Es hat die Möglichkeit, die Groß-/Kleinschreibung mit -I zu ignorieren :

   $ gedit &
   [1] 14852

   $ killall -I GEDIT
   [1]+  Terminated              gedit

Um mehr über verschiedene Flags zu erfahren, die von killall bereitgestellt werden (z. B. -u , mit der Sie benutzereigene Prozesse beenden können) finden Sie in der Manpage (man killall )

Mit xkill

Sind Sie jemals auf ein Problem gestoßen, bei dem ein Mediaplayer wie VLC ausgegraut oder hängen geblieben ist? Jetzt können Sie die PID finden und die Anwendung mit einem der oben aufgeführten Befehle beenden oder xkill verwenden .

xkill ermöglicht es Ihnen, ein Fenster mit einer Maus zu töten. Führen Sie einfach xkill aus in einem Terminal, das den Mauszeiger in ein x ändern sollte oder ein kleines Totenkopf-Symbol. Klicken Sie auf x auf das Fenster, das Sie schließen möchten. Seien Sie vorsichtig mit xkill , aber – wie die Manpage erklärt, kann es gefährlich sein. Sie wurden gewarnt!

Weitere Informationen finden Sie auf der Manpage jedes Befehls. Sie können auch Befehle wie pkill erkunden und pgrep .


Linux
  1. So beenden Sie einen Zombie-Prozess unter Linux

  2. Wie kann man einen laufenden Prozess unter Linux neu starten (oder zurücksetzen)?

  3. Wie beendet man einen Prozess, der auf einem bestimmten Port in Linux läuft?

  4. Wie stoppe ich einen Bildschirmprozess unter Linux?

  5. Wie beendet man einen Prozess, der auf einem bestimmten Port in Linux läuft?

Kill-Befehl unter Linux

So beenden Sie Zombie-Prozesse in Linux

So beenden Sie den laufenden Linux-Prozess auf einem bestimmten Port

So finden Sie die Prozess-ID eines Programms und beenden es [Kurztipp]

Wie man einen Prozess unter Linux beendet

So beenden oder beenden Sie einen Linux-Prozess:Der ultimative Leitfaden