ක්‍රියාවලියක 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.