Laufende Prozesse mit Dateinamen anzeigen?


11

Ich verwende Putty, um meinen Linux-Server zu verbinden, auf dem sich meine Websites befinden. Ich kann ausführen

# ps aux | less

laufende Prozesse anzeigen. Aber ich möchte anzeigen, welche Dateien diese Prozesse ausführen?

Ich habe es auch versucht

# ps aux | grep <pid>

Aber diesen Fehler bekommen:

-bash: syntax error near unexpected token `newline'

Was ist der richtige Weg, um es zu tun?


4
in grep <pid>sollst du durch <pid>deine eigentliche Prozess-ID ersetzen (es ist eine Zahl). <pid>ist nur ein Platzhalter, nicht etwas, das Sie tatsächlich eingeben sollten.
Ben Voigt

Antworten:


13

ps aux | grep <pid>ist kein Shell-Befehl. Die Notation<pid> ist eine übliche Konvention, die bedeutet, dass die PID dort platziert wird. Wenn die PID beispielsweise 1234 lautet, werden Sie ausgeführt ps aux | grep 1234. Dies ist kein sehr nützlicher Befehl, den Sie genauso gut ausführen können ps u 1234.

Ihre Frage ist nicht sehr klar. Was meinst du mit "mit Dateinamen"? Wenn Sie sehen möchten, welche ausführbare Datei der Prozess 1234 ausführt:

ls -l /proc/1234/exe

Wenn Sie sehen möchten, welche Dateien dieser Prozess geöffnet hat:

ls -l /proc/1234/fd

Wenn Sie die vollständige Befehlszeile mit Argumenten anzeigen möchten:

tr '\0' '\n' </proc/1234/cmdline

Wenn Sie lieber Befehle verwenden möchten, lsof -p1234werden alle Dateien angezeigt, die der Prozess geöffnet hat. ps uww 1234zeigt verschiedene Informationen über den Prozess 1234 einschließlich der vollständigen Befehlszeile.



3

Dies ps aux | grep <PID>ist zunächst nützlich, wenn Sie die Details für einen bestimmten Prozess anzeigen möchten, dessen PID(Prozesskennung) durch dargestellt wird <PID>.

Zum Beispiel ( ps aux | grep 'firefox\|USER'bedeutet, dass nur Zeilen gedruckt werden, die enthalten firefoxoder USER):

ps aux | grep 'firefox\|USER'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
terdon  9021  2.5 11.8 1950888 970832 ?      Sl   Apr03 108:41 /opt/firefox/firefox

Die PID für meine firefoxInstanz lautet also 9021. Um den Befehl zu verwenden, den Sie ausführen möchten, würde ich Folgendes ersetzen <PID>durch 9021:

ps aux | grep 9021
terdon  9021  2.5 11.5 1948776 942640 ?      Sl   Apr03 109:03 /opt/firefox/firefox

Ich bin mir nicht sicher, was Sie unter "Anzeigen, welche Dateien diese Prozesse ausführen" verstehen. Wenn Sie damit meinen, anzuzeigen, welche Dateien diese Prozesse verwenden, ps auxist dies eine Möglichkeit. Angenommen, ich habe die Datei /usr/share/doc/nano/faq.htmlmit diesem Befehl geöffnet :

 firefox /usr/share/doc/nano/faq.html 

Ich konnte sehen, welche Datei firefoxgeöffnet wurde mit ps:

ps aux | grep firefox
terdon   31763 18.7  1.0 682916 84352 pts/10   Sl+  17:10   0:02 firefox /usr/share/doc/nano/faq.html

Die geöffnete Datei wird als eines der an Firefox übergebenen Argumente angezeigt. Beachten Sie, dass die PID anders ist (es ist jetzt 31763statt9021 ), weil jedes laufende Programm seine eigene eindeutige PID hat.


Ein weiterer nützlicher Befehl ist top. Wenn Sie es mit dem -cSchalter ausführen, werden die an einen Befehl übergebenen Argumente und -u <your user>damit nur Prozesse angezeigt, die von Ihrem Benutzernamen gestartet wurden (durch <your user>Ihren tatsächlichen Benutzernamen ersetzen ):

top -c -u terdon

Dies ist die Ausgabe auf meinem lokalen Computer (Benutzer terdonführt nur zwei Prozesse aus):

top - 17:14:41 up 3 days, 49 min, 14 users,  load average: 0.48, 0.54, 0.55
Tasks: 228 total,   1 running, 226 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.1 us,  5.5 sy,  0.0 ni, 86.5 id,  0.0 wa,  0.0 hi,  0.9 si,  0.0 st
KiB Mem:   8187940 total,  8007220 used,   180720 free,   349264 buffers
KiB Swap:  8191996 total,     5556 used,  8186440 free,  4173004 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                       
31573 terdon    20   0 24900 5576 1684 S   0.0  0.1   0:00.20 bash                                                          
31763 terdon    20   0  666m  77m  28m S   0.0  1.0   0:02.39 firefox /usr/share/doc/nano/faq.html                          

Eine Erklärung der von gezeigten Informationen topfinden Sie in meiner Antwort auf eine verwandte Frage zu SU.


0

Einige Zeichen unter der Shell sind für spezielle Zwecke wie <>? "; ... ...

grep PID ist nicht nützlich, da PID die Prozess-ID ist und grep ähnliche numerische ...

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.