Was ist der Terminalbefehl, um die ID eines Prozesses herauszufinden?


12

Ich möchte einen Prozess über die Befehlszeile beenden, kann mich jedoch nicht an den Befehl zum Nachschlagen der Prozess-ID erinnern. Weiß es jemand?

Antworten:


13

Der Befehl zum Ermitteln der ID eines Prozesses (mit seinem Namen) lautet pidof. Da Sie jedoch beabsichtigen, den Prozess abzubrechen, gibt es bessere / einfachere Möglichkeiten, als zuerst die pidofPID zu finden:

Angenommen, der Prozess, den Sie beenden möchten, wird eindeutig durch seinen Namen identifiziert (oder Sie möchten alle Prozesse mit diesem Namen beenden), müssen Sie seine PID nicht kennen. Sie können einfach tun killall processname.

Wenn es mehrere Prozesse mit demselben Namen gibt, Sie aber nur einen von ihnen pidofbeenden möchten, hilft Ihnen die Verwendung nicht viel, da Sie die Pids erhalten, aber keine Informationen erhalten, um zu bestimmen, welche der Prozesse Pids gehört zu dem Prozess, den Sie tatsächlich töten möchten.

In diesem Fall können Sie ps aux | grep processnamealle Prozesse mit dem angegebenen Namen sowie die Konsole, auf der sie ausgeführt werden (falls zutreffend) und die Argumente anzeigen, mit denen sie aufgerufen wurden. Auf diese Weise können Sie hoffentlich den gesuchten Prozess identifizieren .

Wenn der Prozess X-Fenster geöffnet hat, können Sie auch xkilltöten (aufrufen xkillund dann auf das Fenster klicken).


7

Sie sollten einen Blick auf pgrepund pkillzwei sehr handlich und leistungsstark Dienstprogramme , die auf den meisten Linux und UNIX - Systemen zu finden sind.

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes

5

Sie können ps -Aim Terminal ausgeführt werden, um alle Prozesse anzuzeigen (mit ihrer Prozess-ID), die derzeit ausgeführt werden.


Pipe to grep, um nach dem Namen eines bestimmten Prozesses zu suchen:ps -A | grep 'my name'
Gabriel Staples

2

Ich hatte auch ein ähnliches Problem. Ich habe benutzt pstree -p; Dies zeigte mir die aktuell laufenden Prozesse einschließlich der Prozess-IDs.


interessanter Befehl
jumpnett


1

Mein Favorit ist pstree -p | grep $(program_name). Dies erfasst den Prozess tatsächlich, hebt ihn hervor und zeigt die PID in Klammern.

Mein nächster Favorit (besonders wenn ich programmiere und alle Pids aus dem Prozess benötige) ist pgrep -law "". Dies gibt Ihnen buchstäblich jede PID, die ausgeführt wird, gefolgt von der Anwendung (mit absolutem Pfad).

Dies kann auf pgrep -lw ""für pid gefolgt vom Programmnamen oder auch nur pgrep -lfür alle pids reduziert werden

Natürlich können Sie nach einem bestimmten Programmnamen (oder einem Teil des Programmnamens) suchen. (dh pgrep -lw firefwird wahrscheinlich so etwas wie "4567 Firefox" anzeigen).


Wäre nicht pstree -psH $(pgrep prgram_name)besser für den ersten Fall?
Muru

Ja das funktioniert auch. Sie könnten dafür einen Alias ​​erstellen. Ich habe nur $ () verwendet, um den Namen eines Programms darzustellen. Ich denke, dass die Eingabe von $ (pgrep name) aufgrund des Dollarzeichens etwas ärgerlich ist, aber ich denke, ein Alias ​​davon könnte hilfreich sein.
dylnmc

0

Diese Antwort von @Ben auf eine doppelte Frage hat mein Problem gelöst:

Verwenden Sie den topBefehl im Terminal.

   The  top  program  provides  a dynamic real-time view of a running
   system.  It can display system summary information as  well  as  a
   list  of processes or threads currently being managed by the Linux
   kernel.  The types of system summary  information  shown  and  the
   types,  order  and size of information displayed for processes are
   all user configurable and that configuration can be  made  persis‐
   tent across restarts.

via man top

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.