2013-08-17 07:12:47 +0000 2013-08-17 07:12:47 +0000
280
280

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?

Antworten (10)

308
308
308
2013-08-17 08:21:51 +0000

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

53
53
53
2013-08-17 08:04:46 +0000

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
15
15
15
2015-04-18 02:16:04 +0000

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]

8
8
8
2017-05-27 04:28:29 +0000

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
8
8
8
2016-05-06 00:14:20 +0000
# 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
3
3
3
2015-08-30 23:31:50 +0000

Ähnlich wie slhcks Antwort , aber mit Dateioperationen anstelle von Befehlsaufrufen:

MYPID=1
cat "/proc/$MYPID/comm"
3
3
3
2013-08-17 09:32:59 +0000

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
2
2
2
2016-02-23 21:47:17 +0000

Ü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.

0
0
0
2016-11-21 09:48:46 +0000

Die einfachste Methode finde ich mit folgendem Befehl:

ps -awxs | grep pid
0
0
0
2016-12-26 15:08:43 +0000