Wenn ich die PID-Nummer eines Prozesses kenne, wie kann ich seinen Namen erfahren?
Wenn ich die PID-Nummer eines Prozesses (auf einem UNIX-Rechner) habe, wie kann ich den Namen des zugehörigen Prozesses herausfinden?
Was muss ich tun?
Wenn ich die PID-Nummer eines Prozesses (auf einem UNIX-Rechner) habe, wie kann ich den Namen des zugehörigen Prozesses herausfinden?
Was muss ich tun?
Auf allen POSIX-kompatiblen Systemen und unter Linux können Sie ps
verwenden:
ps -p 1337 -o comm=
Hier wird der Prozess durch seine PID mit -p
ausgewählt. Die Option -o
gibt das Ausgabeformat an, wobei comm
den Befehlsnamen bedeutet.
Siehe auch: ps
- Die Basisspezifikationen der Open Group Ausgabe 6
Sie können den Prozessnamen oder den von der Prozess-ID oder pid verwendeten Befehl aus
/proc/pid/cmdline
herausfinden, indem Sie
cat /proc/pid/cmdline
Hier ist pid die pid, für die Sie den Namen suchen. Zum Beispiel:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Um den von pid 2480 verwendeten Prozessnamen zu finden, verwenden Sie can
# cat /proc/2480/cmdline
gnome-terminal
Um den Pfad des Programms mit einer bestimmten pid zu erhalten, können Sie verwenden:
ps ax|egrep "^ [PID]"
alternativ können Sie verwenden:
ps -a [PID]
Sie können pmap verwenden. Ich suche nach PID 6649. Und schneide die zusätzlichen Prozessdetails ab.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
# ls -la /proc/ID_GOES_HERE/exe
Beispiel:
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
Ähnlich wie slhcks Antwort , aber mit Dateioperationen anstelle von Befehlsaufrufen:
MYPID=1
cat "/proc/$MYPID/comm"
Sie können awk auch in Kombination mit ps
ps aux | awk '$2 == PID number for a process { print $0 }'
verwenden Beispiel:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
zum Drucken von HEAD LINE können Sie
ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
(or)
ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'
root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
``` verwenden
Überraschenderweise hat niemand die Option -f (full command) für ps erwähnt. Ich verwende sie gerne mit -e (alles) und schicke die Ergebnisse über die Pipeline an grep, damit ich meine Suche eingrenzen kann.
ps -ef | grep <PID>
Dies ist auch sehr nützlich, um sich vollständige Befehle anzusehen, die jemand ausführt und die eine Menge Ressourcen auf Ihrem System beanspruchen. Dies zeigt Ihnen die Optionen und Argumente, die dem Befehl übergeben wurden.
Die einfachste Methode finde ich mit folgendem Befehl:
ps -awxs | grep pid
hat ein einfaches Skript erstellt, um die PID zu finden und in Bash-Skripten zu verwenden…
Screenshot:
André