एक विशिष्ट पोर्ट का उपयोग करके प्रक्रिया का पीआईडी ​​ढूँढना?


391

मैं अपने उबंटू प्रणाली पर हडूप स्थापित कर रहा हूं। जब मैं इसे शुरू करता हूं, तो यह रिपोर्ट करता है कि पोर्ट 9000 व्यस्त है।

मैंनें इस्तेमाल किया:

netstat -nlp|grep 9000

यह देखने के लिए कि क्या ऐसा पोर्ट मौजूद है और मुझे यह मिल गया है:

   tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

लेकिन मैं उस प्रक्रिया के पीआईडी ​​को कैसे प्राप्त कर सकता हूं जो इसे धारण कर रहा है?




netstatआदेश आपको प्राप्त करने की अनुमति देने के लिए कई संचालन प्रणालियों में काम कर सकता है, आपको बस उन तर्कों को खोजना होगा जो यह सुनिश्चित करेंगे कि यह प्रत्येक ज्ञात खुले पोर्ट के साथ pids दिखाएगा।
लुसियानो

जवाबों:


474

लिनक्स पर, आपको अपनी इच्छा की जानकारी प्राप्त करने के लिए रूट या प्रक्रिया का स्वामी होना चाहिए। जैसे, किसी अन्य उपयोगकर्ता के रूप में चलने वाली प्रक्रियाओं के लिए, 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)

36
नोट: OSX के तहत, -pविकल्प प्रक्रिया के बजाय प्रोटोकॉल के लिए है। इस प्रश्न को
ब्रायन पी

3
@BryanP ओपी ने उबंटू के लिए कहा ताकि थोड़े अप्रासंगिक हो ...
एडम बी

43
@AdamB जब तक कोई मैक उपयोगकर्ता यहां नहीं पहुंचा, तब तक खोजा गयाFinding the PID of the process using a specific port
mararoncruz

2
इस उत्तर को शायद sudoसबसे ऊपर रखने की जरूरत है ।
नचट

2
@MrOnyancha terse (-t) विकल्पों का उपयोग करें -lsof -ti tcp:80
मोहनीश

138

इसके अलावा आप 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
दमकल १x

1
जरूरी नहीं कि जड़ हो। और, उन लोगों के लिए जो केवल पीआईडी ​​प्राप्त करना चाहते हैं, आप कर सकते हैं lsof -i :25 -Fp, जो आउटपुट का उत्पादन करता है p1234
रॉबर्ट

12

मैं "सेंटो 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'
स्टीफन चेज़लस

10

के साथ कमांड चलाना 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प्रदर्शन प्रक्रिया आईडी के रूप में रनिंग कमांड
यूजेन कोनकोव

लेकिन क्या होगा अगर sudo netstat -nlp | grep 34157अभी भी -पीआईडी ​​के बजाय प्रदर्शित करें ?
यूजेन कोनकोव

8

इसके अलावा आप उपयोग कर सकते हैं fuser:

fuser -v -n tcp 22

उत्पादन :

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

यह fuser काम नहीं कर रहा है -v -n tcp 80 , यहां तक ​​कि मैं sudo के साथ कोशिश करता हूं
SuperKrish

1
नोट: इसके लिए sudoयदि आपत्तिजनक प्रक्रिया की शुरुआत भी की गई थी, तो इसकी आवश्यकता हैsudo
लैगिंगसर्प्लेक्स

1
यह आम तौर पर याद करने के लिए एक अच्छी बात है। लिनक्स में कमांड्स आम तौर पर रूट / सुडो द्वारा शुरू की गई प्रक्रियाओं की जानकारी नहीं देंगे जब तक कि सूडो के साथ कमांड नहीं चलाया जाता है। यह तब भी सच है जब कमांड को सामान्य रूप से सही ढंग से चलाने के लिए सुडो की आवश्यकता नहीं होती है।
njfife
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.