ක්‍රියාවලියක PID අංකය මා දන්නේ නම්, එහි නම ලබා ගන්නේ කෙසේද?


284

ක්‍රියාවලියක් සඳහා මට PID අංකය තිබේ නම් (යුනික්ස් යන්ත්‍රයක), ඒ හා සම්බන්ධ ක්‍රියාවලියේ නම සොයා ගන්නේ කෙසේද?

මා කුමක් කළ යුතුද?


9
ඔබට භාවිතා කළ හැකි psහෝls -l /proc/$PID/exe
Eddy_Em

1
DEddy_Em මඟින් ඔබට ක්‍රියාත්මක කළ හැකි ගොනුව ලබා දෙනු ඇත, එය සැමවිටම ක්‍රියාවලියේ නම නොවේ. එසේම, එය අතේ ගෙන යා නොහැක ...
ඩෙරොබට්

9
ps -fp PIDසම්පූර්ණ විධානය පෙන්වනු ඇත
තේමාක්

Answers:


314

සියලුම POSIX- අනුකූල පද්ධතිවල සහ ලිනක්ස් සමඟ ඔබට භාවිතා කළ හැකිය ps:

ps -p 1337 -o comm=

මෙන්න, ක්රියාවලිය එහි PID සමඟ තෝරා ගනු ලැබේ -p. මෙම -oවිකල්පය, ප්රතිදානය ආකෘතිය විශේෂණය commවිධානය නම අර්ථය.

මෙයද බලන්න: ps- විවෘත කණ්ඩායම් මූලික පිරිවිතර නිකුතුව 6


33
com මඟින් විධානය අක්ෂර 15 කට කපා දමයි. commandඒ වෙනුවට භාවිතා කිරීම එය නිවැරදි කරයි.
නෙමෝ

1
[උබුන්ටු 14.04.4 LTS] $ ps -p 1 -o comm= init $ ps -p 1 -o command= / sbin / init; එයින් අදහස් වන්නේ එය අක්ෂර 15 ක් පමණ නොවේ, සමහර විට ද්විමය නාමයට එදිරිව එහි සම්පූර්ණ මාවත විය හැකිය.
ඔමාර් ඔත්මන්

3
ඇත්ත වශයෙන්ම, commද්විමය නම commandලබා දී තර්කය 0 ලබා දෙයි
රොබී

54

ඔබට ක්‍රියාවලි නාමය හෝ ක්‍රියාවලි- id හෝ pid භාවිතා කරන විධානය සොයාගත හැකිය

/proc/<pid>/cmdline

කිරීමෙන්

cat /proc/<pid>/cmdline

මෙන්න pid යනු ඔබට නම සොයා ගැනීමට අවශ්‍ය pid ය.
උදාහරණයක් ලෙස:

 # ps aux

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

පිඩ් 2480 භාවිතා කරන ක්‍රියාවලි නාමය සොයා ගැනීමට ඔබට හැකිය

# cat /proc/2480/cmdline 

 gnome-terminal

14
ප්‍රවේශම් වන්න: OP යුනික්ස් ගැන සඳහන් කරයි. සියලුම යුනික්ස් ක්‍රියාවලි-විශේෂිත ගොනුව වැනි 9 වන සැලැස්ම ක්‍රියාත්මක නොකරයි. ඔබේ පිළිතුර සාමාන්‍යයෙන් අදාළ වන්නේ ලිනක්ස් වලට පමණි.
slhck

3
එය සත්‍යයක් වුවත්, ඔවුන් "ලිනක්ස්" යන ප්‍රශ්නය ටැග් කළේය. ලිනක්ස් නොවන යුනික්ස් මෙහෙයුම් පද්ධතියක් භාවිතා කරන ඕනෑම අයෙකුට ඔවුන්ගේ අවශ්‍යතාවන්ට සරිලන පරිදි පිළිතුරු වෙනස් කිරීමට පුරුදු වනු ඇත
වයිට්

16

කිසියම් පෑඩ් භාවිතා කරමින් වැඩසටහනේ මාවත ලබා ගැනීම සඳහා ඔබට භාවිතා කළ හැකිය:

ps ax|egrep "^ [PID]"

විකල්පයක් ලෙස ඔබට භාවිතා කළ හැකිය:

ps -a [PID]

රූප විස්තරය මෙහි ඇතුළත් කරන්න


1
ps -aපර්යන්තය හා සම්බන්ධ සියලු ක්‍රියාදාමයන් ලැයිස්තුගත කරන්න, එය කිසිදු ආදානයක් නොගනී.
මයිකල් ලී

1
Ic මයිකල්ලී මම හිතන්නේ එය psඅනුවාදය මත පදනම් procps version 3.2.7වේ.
CONvid19

8
# ls -la /proc/ID_GOES_HERE/exe

උදාහරණයක්:

# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai  5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop

මෙය පරිපූර්ණයි.
jayarjo

2
බොහෝ විට වඩා හොඳ: readlink /proc/1337/exe. readlink - විසඳන සංකේතාත්මක සබැඳි හෝ කැනොනිකල් ගොනු නම් මුද්‍රණය කරන්න.
පැබ්ලෝ ඒ

ක්‍රියාත්මක කළ හැකි නම සැමවිටම ක්‍රියාවලි නාමය නොවේ යන ප්‍රශ්නයට සමහරු අදහස් දැක්වීය, උදා: තුවක්කෝන් හෝ එන්ජින්ක්ස්. සමහර ක්‍රියාදාමයන් එය ක්‍රියාත්මක setprocname
වේලාවේදී

කෙසේ වෙතත් මට ක්‍රියාත්මක කළ හැකි නම අවශ්‍ය නම්, මේ /procක්‍රමය පරිපූර්ණයි.
ttimasdf

8

ඔබට pmap භාවිතා කළ හැකිය. මම PID 6649 සොයමින් සිටිමි. තවද අමතර ක්‍රියාවලි විස්තර කපා හැරීම.

$ pmap 6649 | head -1
6649:   /usr/lib64/firefox/firefox

මෙම විධානය මට අවශ්‍ය ප්‍රමාණයට වඩා උදව් විය, ආරම්භ වූ ක්‍රියාවලියේ සම්පූර්ණ රේඛාව මා සතුව ඇත. ජාවා ක්‍රියාවලියක් ලබා දී ඇති විට, psඔබ දකින සියල්ලම සාධාරණ ය java, නමුත් සම්මත කළ ඉතිරි පරාමිතීන් සම්පුර්ණයෙන්ම පෙන්වනු ඇත pmap.
ඩැනියෙල් ඇන්ඩ්‍රි මින්කේ

3

ඔබට ps සමඟ ඒකාබද්ධව awk භාවිතා කළ හැකිය

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

උදාහරණයක්:

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

ඔබට භාවිතා කළ හැකි HEAD LINE මුද්‍රණය කිරීමට

 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
මෙය අස්ථායි වන්නේ එය ඔවුන්ගේ විධානයෙහි ඕනෑම තැනක අංකය ඇතුළත් කිරීමට අවශ්‍ය ක්‍රියාවලීන් තෝරා ගන්නා බැවිනි. උදාහරණයක් ලෙස ps ax | grep 1එය initක්‍රියාවලිය නැවත ලබා දෙයිදැයි උත්සාහ කර බලන්න . (මගේ නඩුවේදී, එය පේළි 119 ක් ලබා දෙයි, එය සුදුසු නොවේ.)
slhck

1
@slhck පිළිතුර වෙනස් කරන ලදි ... තොරතුරු සඳහා ස්තූතියි .. ps -p 1 -o comm = මෙම ප්‍රශ්නයට හොඳම විකල්පයයි.
ගංගාධර්

ශීර්ෂයන් රඳවා ගැනීමට අපට ලකුණු දෙකක් අවශ්‍ය නැත, ඒ වෙනුවට භාවිතා කරන්න ps aux | awk 'NR==1 || $2==PID'- {print $0}එය පෙරනිමිය නිසා කීමට අවශ්‍ය නැත . නමුත් ඔබ අදහස් දැක්වූ පරිදි, -pකෙසේ වෙතත් වඩා හොඳය.
dave_thompson_085

3

Slhck ගේ පිළිතුරට සමානය , නමුත් විධාන ආයාචනා වෙනුවට ගොනු මෙහෙයුම් මත යැපීම:

MYPID=1
cat "/proc/$MYPID/comm"

[උබුන්ටු 14.04.4 LTS] cat /proc/1/comm=> init, / sbin / init නොවේ. ඔහුගේ පිළිතුරට දිගු අනුවාදය ඇතුළත් වේ. කෙසේ වෙතත් +1.
ඔමාර් ඔත්මන්

2

පුදුමයට කරුණක් නම්, ps සඳහා -f (full command) විකල්පය කිසිවෙකු සඳහන් කර නැත. -E (සෑම දෙයක්ම) සමඟ එය භාවිතා කිරීමට මම කැමතියි.

ps -ef | grep <PID>

ඔබේ පද්ධතියේ බොහෝ සම්පත් ලබා ගන්නා යමෙකු ක්‍රියාත්මක වන සම්පූර්ණ විධානයන් බැලීමට මෙයද ඉතා ප්‍රයෝජනවත් වේ. මෙය ඔබට විධානය වෙත ලබා දුන් විකල්ප සහ තර්ක පෙන්වනු ඇත.


3
BSD මත ක්‍රියා නොකරයි (සමහර විට MacOSX ද ඇතුළුව? මට විශ්වාස නැත). -e -fලබා ගත හැකි ස්ථානවල පවා grepබොහෝ ව්‍යාජ ගැලපීම් ඇති කළ හැකිය. උදා: grep 33pid = 933 හෝ 339, ppid = 33 හෝ 933 හෝ 339, තත්පර 33 ක් හෝ මිනිත්තු 33 ක් කාලානුරූපව භාවිතා කිරීම, හෝ 33 ක් අඩංගු වැඩසටහන් grepනාමයක් හෝ තර්කයක් ඇතුළත් වේ. සියලු (AFAIK) psතියෙනවා -pඉතින් නිකමට, ps -fp 33.
dave_thompson_085

0

පහත දැක්වෙන විධානය සමඟ සිටීමට පහසුම ක්‍රමය මම සොයා ගතිමි:

ps -awxs | grep pid

සාපේක්ෂව ඉහළ අකාර්යක්ෂමතාවයක් හැරුණු විට ps -p${pid}, මෙය ද ඇතුළුව බොහෝ ව්‍යාජ ධනාත්මක දේ ලබා ගනී grep.
ටෝබි ස්පයිට්

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.