कैसे पता करें कि किसी दिए गए पोर्ट पर कौन सा प्रोग्राम सुन रहा है?


377

मुझे संदेह है कि एक कार्यक्रम 8000मेरी मशीन पर पोर्ट पर सुन रहा है ।

जब मैं निम्नलिखित कमांड चलाता हूं, मुझे यह त्रुटि मिलती है:

> python -m SimpleHTTPServer
# Lots of python error
socket.error: [Errno 98] Address already in use

यदि मैं किसी अन्य पोर्ट ( 8000डिफ़ॉल्ट है) का उपयोग करता हूं , तो वेब सर्वर ठीक चलता है।

यदि मैं wget localhost:8000कमांड लाइन से चलता हूं , तो यह वापस आ जाता है 404 Not Found

पोर्ट पर क्या प्रोग्राम सुन रहा है 8000, यह जानने के लिए मैं क्या कर सकता हूं (या कौन से टूल उपलब्ध हैं) और वहां से उस प्रोग्राम को कॉन्फ़िगर किया गया है।

जवाबों:


313

अपना टर्मिनल खोलें और जैसा लिखें

lsof -i :8000

वह आदेश आपको PID के साथ उस पोर्ट द्वारा उपयोग किए गए एप्लिकेशन को सूचीबद्ध करेगा। (यदि कोई परिणाम sudoआपके द्वारा नहीं चलाए जाते हैं तो आपके पास कुछ प्रक्रियाओं की अनुमति नहीं हो सकती है।)

उदाहरण के लिए, पोर्ट 8000 के साथ ( python3 -m http.server):

$ lsof -i :8000
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
python3 3269 user    3u  IPv4 1783216      0t0  TCP *:8000 (LISTEN)

और पोर्ट 22 (SSH):

$ sudo lsof -i :22
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd     998 root    3u  IPv4 1442116      0t0  TCP *:ssh (LISTEN)
sshd     998 root    4u  IPv6 1442118      0t0  TCP *:ssh (LISTEN)

उम्मीद है की वो मदद करदे।


2
यह OSX पर भी काम करता है, इसकी कीमत .....
reevesy

2
जोड़ना -s TCP:LISTENवास्तविक सुनने वाले सॉकेट और इसकी प्रक्रिया के परिणाम को प्रतिबंधित करता है।
jhermann

1
यदि आप पोर्ट 8000 की खोज करते हैं तो यह वापस आ जाता है PID 1889? वाट
कॉडीबगस्टीन

हां, पोर्ट 8881 का उपयोग करके पीआईडी ​​1889 के साथ सेवा है। क्या मुझे कुछ भी याद नहीं है?
r --d

1
@ उदाहरण 8881 पोर्ट के लिए खोजें। PID कॉलम में प्रक्रिया ID और NAME कॉलम में पोर्ट शामिल हैं।
फ़्रीक डी ब्रुइज़न

377

आप नेटस्टैट का उपयोग यह देखने के लिए कर सकते हैं कि कौन सी प्रक्रिया किस पोर्ट पर सुन रही है।

आप इस कमांड का उपयोग पूर्ण विवरण के लिए कर सकते हैं:

sudo netstat -peanut

अगर आपको यह जानने की जरूरत है कि पोर्ट 8000 पर कौन सा सुन रहा है तो आप इसका उपयोग कर सकते हैं:

sudo netstat -peanut | grep ":8000 "

ऐसी कोई प्रक्रिया नहीं है जो netstat से छिप सके।


117
netstat -peanutसे याद रखना आसान है netstat -taupen!
डगलस बी। स्टेपल

9
अच्छा था ! - अपनी टिप्पणी को प्रतिबिंबित करने के लिए बस उत्तर को संपादित करें। धन्यवाद।
एंटोनी रोड्रिगेज

2
उस बंदरगाह को मुक्त करने के लिए 'फ्यूज़र -k 8000 / tcp'
जय मोदी

3
यदि कॉलम "PID / प्रोग्राम नाम" में आप एक प्रक्रिया नाम के बजाय डैश देखते हैं, तो आप "sudo" जोड़ना भूल गए
v.shashenko

3
तो यह मूंगफली एह है
prusswan

172

@ 33833 के उत्तर पर विस्तार के लिए आप कुछ विस्तृत जानकारी प्राप्त कर सकते हैं, उदाहरण के लिए:

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

मैं वहीं देख सकता हूं कि विद्रूप प्रक्रिया है, लेकिन यह मेरा वास्तविक squid-deb-proxyहै जो बंदरगाह को ले जा रहा है।

एक जावा ऐप का एक और अच्छा उदाहरण:

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

आप lsof(LiSt Open Files) में देख सकते हैं कि यह जावा है, जो सहायक से कम है। psPID के साथ कमांड चलाने से हम तुरंत देख सकते हैं कि यह CrashPlan है।


9
एक कमांड में:lsof -t -i :8000 | xargs ps -fp
ब्रेट वाई

8
मुझे उपसर्ग करना था sudo लेकिन इसके बाद यह मेरे लिए काम कर गया। धन्यवाद।
ड्वेन क्रूक्स

4
ध्यान दें: बिना sudoआपको कोई त्रुटि नहीं मिलेगी, आपको सरल प्रतिक्रिया के रूप में कुछ भी नहीं मिलेगा।
फ्रैंक नॉक

13

पैकेज ssसे आज़माएं iproute2:

ss -nlp | grep 8000

5
ssइसकी अपनी फ़िल्टरिंग क्षमताएं भी हैं ss -nlp '( sport = :8000 )':।
GnP

6

पैकेज socklistसे उपयोग करने का दूसरा तरीका procinfo:

man socklist

वर्णन
socklistएक पर्ल स्क्रिप्ट है जो आपको सभी खुले सॉकेट्स, एन्यूमरेटिंग प्रकारों, पोर्ट, इनोड, यूआईडी, पीआईडी, एफडी और उस प्रोग्राम के लिए एक सूची प्रदान करता है जिसके अंतर्गत वह आता है।

sudo socklist

type  port      inode     uid    pid   fd  name
tcp     53      28749       0   1721    5  dnsmasq
tcp    631      29190       0   2433   11  cupsd
tcp  42376      82230    1000   1345   84  firefox
tcp  49048      71686    1000   1345   67  firefox
tcp  41248      81672    1000   1345  119  firefox
tcp  54676      84558    1000   1345   73  firefox
udp  56107      66258       0   3268   20  dhclient
udp  40804      17857     107    679   14  avahi-daemon
udp     53      28748       0   1721    4  dnsmasq
udp     68      67427       0   3268    6  dhclient
udp    631      19692       0    765    8  cups-browsed
udp   5353      17855     107    679   12  avahi-daemon

2

आप नैम्प का उपयोग कर सकते हैं।

आपके पीसी में कौन से पोर्ट खुले हैं, यह जानना वास्तव में महत्वपूर्ण है, यह न केवल लिनक्स के लिए उपयोगी है, बल्कि अन्य ऑपरेटिंग सिस्टमों के लिए भी, लिनक्स के पास बहुत सारे उपकरण हैं, जो यह जांचते हैं कि कौन से पोर्ट खुले हैं, सबसे आम है, जो एक बहुत बड़ा है कमांड लाइन टूल, लेकिन यदि आप इस तरह से पसंद करते हैं तो इसके लिए एक ग्राफिकल फ्रंट मौजूद है। 1

यह स्थापित करने के लिए, बस प्रेस Ctrl+ Alt+ Tटर्मिनल खोलने के लिए अपने कीबोर्ड पर। जब यह खुलता है, तो नीचे कमांड चलाएँ:

sudo apt-get install nmap

नैमप और अन्य उपयोगिताओं के बारे में अधिक जानकारी के लिए, यहां जाएं

1 स्रोत: garron.me


nmap आपको केवल यह बताएगा कि कोई पोर्ट खुला है, न कि किस प्रक्रिया ने इसे खोला है।
एंड्रयू बर्न्स

1
मैंने [nmap] tries to guess which service is listening on each port, but it can make mistakesसही स्रोत को पढ़ने के लिए आपके स्रोत पर क्लिक किया, इससे पहले कि यह पता लगाना है कि सॉकेट का स्वामित्व किस प्रक्रिया का है।
GnP

@gnp तुम भी इस पर एक नज़र रखना चाहते हो सकता है ।
मिच

@ मिच मैंने किया। ओपी को स्थानीय प्रणाली पर एक प्रक्रिया के सटीक पीआईडी ​​को जानने की आवश्यकता है। Nmap यहां सही टूल नहीं है, सर्विस और वर्जन डिटेक्शन के साथ भी नहीं। या तो यह nmaps डेटाबेस पर एक आइटम से मेल खाएगा, जो अभी भी ओपी को अंधेरे पर देता है कि किस प्रक्रिया को मारने या पुन: कॉन्फ़िगर करने की प्रक्रिया है, या यह नहीं होगा और ओपी के पास एक अच्छा फिंगरप्रिंट और insecure.org का लिंक होगा
GnP
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.