නිශ්චිත වරායක් භාවිතා කරමින් ක්‍රියාවලියේ PID සොයා ගැනීම?


432

මම මගේ උබුන්ටු පද්ධතියේ හැඩූප් ස්ථාපනය කරමි. මම එය ආරම්භ කරන විට, එය වාර්තා කරන්නේ වරාය 9000 කාර්යබහුල බවයි.

මම භාවිතා කළේ:

netstat -nlp|grep 9000

එවැනි වරායක් තිබේදැයි බැලීමට සහ මට මෙය ලැබුණි:

   tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

නමුත් එය රඳවාගෙන සිටින ක්‍රියාවලියේ PID ලබා ගන්නේ කෙසේද?




netstatඔබට එය ලබා ගැනීමට ඉඩ දීම සඳහා විධානය බොහෝ මෙහෙයුම් පද්ධතිවල ක්‍රියා කළ හැකිය, ඔබ දන්නා එක් එක් විවෘත වරාය දිගේ පයිඩ් පෙන්වන බව සහතික කරන තර්ක සොයාගත යුතුය.
ලුසියානෝ

Answers:


531

ලිනක්ස් හි, ඔබ කැමති තොරතුරු ලබා ගැනීම සඳහා ඔබ root හෝ ක්‍රියාවලියේ හිමිකරු විය යුතුය. එනිසා, වෙනත් පරිශීලකයෙකු ලෙස ක්‍රියාත්මක වන ක්‍රියාවලි සඳහා, පෙර සූදානම sudoඔබට අවශ්‍ය බොහෝ දේ වේ. ඊට අමතරව, නූතන ලිනක්ස් පද්ධතිවල ssමෙය කිරීමට භාවිතා කළ හැකි මෙවලමකි:

$ sudo ss -lptn 'sport = :80'
State   Local Address:Port  Peer Address:Port              
LISTEN  127.0.0.1:80        *:*                users:(("nginx",pid=125004,fd=12))
LISTEN  ::1:80              :::*               users:(("nginx",pid=125004,fd=11))

ඔබ දැනට භාවිතා කරන එකම ආයාචනයද භාවිතා කළ හැකිය, නමුත් මතක තබා ගන්න sudo:

$ sudo netstat -nlp | grep :80
tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  125004/nginx

ඔබට lsof ද භාවිතා කළ හැකිය:

$ sudo lsof -n -i :80 | grep LISTEN
nginx   125004 nginx    3u  IPv4   6645      0t0  TCP 0.0.0.0:80 (LISTEN)

37
සටහන: OSX යටතේ, -pවිකල්පය ක්‍රියාවලියට වඩා ප්‍රොටෝකෝලය සඳහා වේ. මෙම ප්‍රශ්නය
බ්‍රයන් පී

3
Ry බ්‍රයන් පී ඕපී උබුන්ටු ඉල්ලූ නිසා එය කිසිසේත්ම අදාල නොවේ ...
ඇඩම් බී

49
DAdamB මැක් පරිශීලකයෙකු මෙහි පැමිණියේ නැත්නම්Finding the PID of the process using a specific port
mraaroncruz

3
අවශ්‍යතාවය sudoඉහළින් තැබීමෙන් මෙම පිළිතුර බොහෝ විට වැඩිදියුණු වනු ඇත .
නැච් - මොනිකා

2
RMrOnyancha terse (-t) විකල්ප භාවිතා කරන්න -lsof -ti tcp:80
Mohnish

145

එසේම ඔබට lsofඋපයෝගීතාව භාවිතා කළ හැකිය . මූල විය යුතුය.

# lsof -i :25
COMMAND  PID        USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
exim4   2799 Debian-exim    3u  IPv4   6645      0t0  TCP localhost:smtp (LISTEN)
exim4   2799 Debian-exim    4u  IPv6   6646      0t0  TCP localhost:smtp (LISTEN)

9
මෙම විධානය මඟින් ඔබට ක්‍රියාවලි establishedපමණක් නොව සම්බන්ධතා සමඟ ක්‍රියාවලි ලබා දෙනු ඇත listening.
firelynx

2
මූල වීමට අවශ්‍ය නොවේ. තවද, PID පමණක් ලබා ගැනීමට කැමති අයට, ඔබට හැකි අතර lsof -i :25 -Fp, එමඟින් ප්‍රතිදානය නිපදවයි p1234.
රොබට්

14

මම "CentOS 7 අවම" ඇත වත් කරන මා භාවිතා netstatවත් lsof. නමුත් ලිනක්ස් බෙදාහැරීම් බොහොමයකට සොකට් සංඛ්‍යාන විධානය (එනම් ss) ඇත.

ක්‍රියාත්මක කිරීම පිළිබඳ උදාහරණයක් මෙන්න:

# ss -tanp | grep 6379
LISTEN   0    128  127.0.0.1:6379   *:*   users:(("redis-server",pid=2531,fd=4))

1
මෙයද බලන්නss -pntl 'sport = :6379'
ස්ටෙෆාන් චසෙලාස්

12

සමඟ විධානය ක්‍රියාත්මක කිරීමෙන් sudoඔබට ලැබෙනු ඇත PID. මගේ සංවර්ධන යන්ත්‍රයෙන් මට ලැබෙන්නේ:

$ netstat -nlp | grep 8080
tcp6       0      0 :::8080      :::*       LISTEN      -

$ sudo netstat -nlp | grep 8080
tcp6       0      0 :::8080      :::*       LISTEN      16449/java

වෙනත් පිළිතුරු වල සඳහන් පරිදි ඔබට ssහෝ lsofවිධාන භාවිතා කළ හැකිය .


sudoදර්ශන ක්‍රියාවලි හැඳුනුම්පතක් ලෙස ධාවනය වන විධානය
ඉයුජන් කොන්කොව්

PID වෙනුවට sudo netstat -nlp | grep 34157තවමත් දර්ශනය වන්නේ නම් කුමක් කළ -යුතුද?
ඉයුජන් කොන්කොව්

10

ඔබට භාවිතා කළ හැකිය fuser:

fuser -v -n tcp 22

ප්‍රතිදානය:

                     USER        PID ACCESS COMMAND
22/tcp:              root        598 F.... sshd

එය ෆියුසර් -v -n tcp 80 වැඩ කරන්නේ නැත , මම පවා sudo සමඟ උත්සාහ කරමි
SuperKrish

1
සටහන: sudoවරද කිරීමේ ක්‍රියාවලිය ද ආරම්භ කර ඇත්නම් මෙය අවශ්‍ය වේsudo
laggrefreflex

1
මෙය සාමාන්‍යයෙන් මතක තබා ගැනීම හොඳ දෙයකි. සුනෝ සමඟ විධානය ක්‍රියාත්මක නොවන්නේ නම් ලිනක්ස් හි විධාන සාමාන්‍යයෙන් root / sudo විසින් ආරම්භ කරන ලද ක්‍රියාවලි පිළිබඳ තොරතුරු ලබා නොදේ. සාමාන්‍යයෙන් විධානය නිවැරදිව ක්‍රියාත්මක වීමට sudo අවශ්‍ය නොවන විට පවා මෙය සත්‍ය වේ.
njfife
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.