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

Als ik het PID nummer van een proces weet, hoe kom ik dan aan de naam ervan?

Als ik het PID nummer van een proces heb (op een UNIX machine), hoe kom ik dan de naam van het bijbehorende proces te weten?

Wat moet ik doen?

Antwoorden (10)

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

Op alle POSIX-compatibele systemen, en met Linux, kunt u ps gebruiken:

ps -p 1337 -o comm=

Hier wordt het proces geselecteerd door zijn PID met -p. De -o optie specificeert het uitvoerformaat, comm betekent de opdrachtnaam.

Zie ook: ps - De Open Group Base Specifications Issue 6

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

U kunt de procesnaam of het commando dat gebruikt wordt door de proces-id of pid vinden uit

/proc/pid/cmdline

door te doen

cat /proc/pid/cmdline

Hier is pid de pid waarvoor u de naam wilt vinden Voor exmaple:

# ps aux

   ................
   ................
   user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
   ................
   ................

Om de procesnaam te vinden die gebruikt wordt door pid 2480 gebruikt u kan

# cat /proc/2480/cmdline 

 gnome-terminal
``` &001
15
15
15
2015-04-18 02:16:04 +0000

Om het pad van het programma met behulp van een bepaalde pid te krijgen kunt u gebruik maken van:

ps ax|egrep "^ [PID]"

of u kunt gebruik maken van:

ps -a [PID]
  • *

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

Je kunt pmap gebruiken. Ik ben op zoek naar PID 6649. En het afsnijden van de extra procesdetails.

$ 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

Voorbeeld:

# 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

Vergelijkbaar met slhck’s Antwoord , maar vertrouwend op bestandsbewerkingen in plaats van opdrachtopdrachten:

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

U kunt ook awk gebruiken in combinatie met ps

ps aux | awk '$2 == PID number for a process { print $0 }'

bijvoorbeeld:

root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init

om HEAD LINE te printen kunt u gebruik maken van

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

Verrassend genoeg heeft niemand de -f (full command) optie voor ps genoemd. Ik gebruik het graag met -e (alles) en pijp de resultaten naar grep zodat ik mijn zoekopdracht kan verfijnen.

ps -ef | grep <PID>

Dit is ook erg handig om te kijken naar volledige commando’s die iemand uitvoert en die veel resources op je systeem nemen. Dit zal je de opties en argumenten laten zien die aan het commando worden doorgegeven.

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

Ik vind de makkelijkste methode om met de volgende opdracht te zijn:

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

een eenvoudig script gemaakt om PID te vinden en te gebruiken binnen bash scripts… gebruik met voorzichtigheid!

Screenshot:

http://pastebin.com/Cm9YH67U

André