आप यह कैसे पता लगा सकते हैं कि कौन सी प्रक्रिया विंडोज पर एक पोर्ट पर सुन रही है?


2271

आप यह कैसे पता लगा सकते हैं कि कौन सी प्रक्रिया विंडोज पर एक पोर्ट पर सुन रही है?


3
Currports एक उपकरण है जो खोज + फ़िल्टर को भी nirsoft.net/utils/cports.html में
ब्लू क्लाउड

1
मैं IntelliJ के तहत डिबग मोड में टॉमकैट चलाने की कोशिश करते हुए इसमें भाग गया, मेरे लिए सबसे अच्छा समाधान डिबग ट्रांसपोर्ट कॉन्फ़िगरेशन (फ़ाइल-> सेटिंग्स-> बिल्ड / एक्स / तैनाती-> डीबगर) को "सॉकेट" से बदलना था। "शेयर्ड मेमोरी"।
TMN

जवाबों:


2618

नया उत्तर, शक्तियां

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

पुराना उत्तर, सी.एम.डी.

 C:\> netstat -a -b

(जोड़े -n संकल्प होस्ट नामों की कोशिश कर इसे रोकने के लिए है, जो यह बहुत तेजी से कर देगा।)

नोट TCPView के लिए डेन की अनुशंसा । यह बहुत उपयोगी लगता है!

-एक सभी कनेक्शन और सुनने के बंदरगाहों को प्रदर्शित करता है।

-b प्रत्येक कनेक्शन या श्रवण पोर्ट बनाने में शामिल निष्पादन योग्य प्रदर्शित करता है। कुछ मामलों में जाने-माने निष्पादनकर्ता कई स्वतंत्र घटकों की मेजबानी करते हैं, और इन मामलों में कनेक्शन बनाने या सुनने के बंदरगाह में शामिल घटकों के अनुक्रम को प्रदर्शित किया जाता है। इस मामले में निष्पादन योग्य नाम नीचे [] में है, शीर्ष पर वह घटक है जिसे यह कहा जाता है, और तब तक जब तक टीसीपी / आईपी नहीं पहुंच जाता। ध्यान दें कि यह विकल्प समय लेने वाला हो सकता है और तब तक विफल रहेगा जब तक आपके पास पर्याप्त अनुमति न हो।

-एन पते और पोर्ट संख्या संख्यात्मक रूप में प्रदर्शित करता है।

-o प्रत्येक कनेक्शन के साथ जुड़े खुद की प्रक्रिया आईडी प्रदर्शित करता है।


252
-पीआईडी ​​पाने के लिए
लॉरेंट के

121
और टास्ककिल / पीआईडी ​​<pid> तब प्रक्रिया को समाप्त करें, यदि उपयुक्त हो तो / एफ का उपयोग करके।
BitMask777

81
आपको अपने कमांड लाइन शेल को व्यवस्थापक के रूप में चलाना पड़ सकता है, अन्यथा आपको अपर्याप्त विशेषाधिकार के बारे में त्रुटि संदेश मिल सकता है। Cmd.exe पर राइट-क्लिक करते समय "व्यवस्थापक के रूप में चलाएँ" विकल्प का उपयोग करें।
ग्रुबर

6
काम करता है, लेकिन उच्च अनुमति की आवश्यकता होती है। Shift + राइट आइकन पर क्लिक करें -> व्यवस्थापक के रूप में चलाएँ
क्रिश्चियन बोंजिएनो

18
PID प्राप्त करने के बाद - मान लें कि यह है 1234- तब आप tasklist /fi "pid eq 1234"प्रक्रिया के नाम और अन्य विवरणों का पता लगाने के लिए उपयोग कर सकते हैं ।
स्टीव चेम्बर्स

2202

विंडोज के लिए एक देशी GUI है:

  • प्रारंभ मेनू → सभी प्रोग्रामएक्सेसरीज़सिस्टम टूलसंसाधन मॉनिटर

या भागो resmon.exe , या से टास्क मैनेजर के प्रदर्शन टैब से।

यहां छवि विवरण दर्ज करें


41
बाध्यकारी की फ़ायरवॉल स्थिति (अंतिम कॉलम) भी दिखाता है। बहुत उपयोग।
राफेल

8
इसे चलाने के लिए आपको एक प्रशासक (या उस समूह में) की आवश्यकता है।
कृष्णप्रभाकर

2
@bcorso, " अनिर्दिष्ट पते " से क्या मतलब है?
पचेरियर

5
टास्क मैनेजर के प्रदर्शन टैब से भी लॉन्च किया जा सकता है, कम से कम विंडोज 10 में (अन्य संस्करणों की जाँच नहीं की गई है।)
मथ्यू के।

10
ऊपर @ user4836454 की टिप्पणी सही नहीं है: संसाधन मॉनिटर, श्रोताओं के साथ पोर्ट दिखाते हैं, भले ही इन पोर्ट का कोई नेटवर्क कनेक्शन न हो। बस अनुभाग "टीसीपी कनेक्शन" के बजाय "श्रवण पोर्ट" अनुभाग देखें।
जेपीसी

235

यदि आप इसके लिए एक GUI चाहते हैं तो TCPView का उपयोग करें। यह पुराना Sysinternals एप्लिकेशन है जिसे Microsoft ने खरीदा था।


9
यह मेरे अनुसार सबसे अच्छा विकल्प है, खासकर जब से सभी प्रक्रियाएं एक ही सूची में हैं और आप उन्हें सीधे राइट-क्लिक करके प्रक्रियाओं को बंद कर सकते हैं।
एंड्रियास लुंडग्रेन

8
इसके अलावा, इसके लिए व्यवस्थापक privelges की आवश्यकता नहीं है!
जनक मीणा

222

विंडोज के लिए:

netstat -aon | find /i "listening"

25
+1 लेकिन ध्यान रखें, यदि आपकी विंडो अंग्रेजी के अलावा किसी अन्य भाषा में चलती है, तो आपको "सुन" को मूल शब्द में बदलना होगा। जैसे netstat -aon | find /i "abhören"जर्मन के लिए।
लेविट

2
मेरे मामले में यह उद्धरण चिह्नों के कारण शायद काम नहीं करता, लेकिन समाधान netstat -aon | खोज पूरी तरह से काम करता है!
द गॉडफादर 16

यह उत्थित विशेषाधिकारों की आवश्यकता के बिना काम करता है।
व्लाद श्नाकोवस्ज़की 16

1
W10 15063.729 पर PowerShell के साथ इस कमांड को चलाने की कोशिश करते हुए मुझे एक त्रुटि मिल रही है:FIND: Parameter format not correct
निके मैनारिन

1
यह उत्तर कैसे प्रासंगिक है "किस प्रक्रिया [नाम] विंडोज पर एक बंदरगाह पर सुन रहा है?"
पावेल कियोच

137

अधिकांश उत्तरों में उल्लिखित -b स्विच के लिए आपको मशीन पर प्रशासनिक विशेषाधिकार होना चाहिए। प्रक्रिया नाम पाने के लिए आपको वास्तव में उन्नत अधिकारों की आवश्यकता नहीं है!

पोर्ट नंबर में चल रही प्रक्रिया की पीडा ज्ञात करें (जैसे, 8080)

netstat -ano | findStr "8080"

Pid द्वारा प्रक्रिया का नाम ज्ञात करें

tasklist /fi "pid eq 2216"

टीसीपी / आईपी पोर्ट द्वारा प्रक्रिया खोजें


82

यदि आप निम्न आदेश चलाते हैं तो आप अधिक जानकारी प्राप्त कर सकते हैं:

netstat -aon | find /i "listening" |find "port"

'फाइंड' कमांड का उपयोग करने से आप परिणामों को फ़िल्टर कर सकते हैं। find /i "listening"केवल उन बंदरगाहों को प्रदर्शित करेगा जो 'सुन रहे हैं'। ध्यान दें, आपको /iमामले को अनदेखा करने की आवश्यकता है , अन्यथा आप "LISTENING" टाइप करेंगे। | find "port"केवल विशिष्ट पोर्ट संख्या वाले लोगों के लिए परिणामों को सीमित करेगा। ध्यान दें, इस पर यह उन परिणामों को भी फ़िल्टर करेगा जिनके पास प्रतिक्रिया स्ट्रिंग में कहीं भी पोर्ट नंबर है।


8
FWIW PowerShell v2.0 पैदावार त्रुटि में इसे चलाने का प्रयास कर रहा है FIND: Parameter format not correct। आपको मानदंड खोजने के बाद एक स्थान जोड़ने की आवश्यकता है। इससे आपका साथ छूट जाएगा netstat -aon | find /i "listening" | find "1234 "
स्व।

2
अपने पोर्ट के साथ "पोर्ट" बदलें, पूर्व "5000"
बुकर

1
@self। मुझे अभी भी पीएस 5.1 के साथ वह त्रुटि मिलती है, यहां तक ​​कि पाइप के बाद स्थान जोड़ने पर भी। क्या आप जानते हैं कि क्या हो रहा है?
निके मैनारिन

2
@NickeManarinin & @self या तो पहले शब्‍दशिल से बदलकर cmd (सिर्फ टाइप करें cmd ​​और फिर एंटर द कमांड रिड्यू) टाइप करें या फिर शब्‍दशिल्‍ली इस कमांड का उपयोग करें: netstat -aon। / I " {back tick}" सुन {back tick}""। Find " {back tick}" port {back tick}"" "(<- भागे हुए उद्धरणों पर ध्यान दें - शब्द back tickको माफ करें क्योंकि मैं वास्तविक चरित्र को जोड़ नहीं सकता क्योंकि यह इसके बारे में सोचता है)
ट्रिस्टन वैन डैम

72
  1. एक कमांड प्रॉम्प्ट विंडो खोलें (प्रशासक के रूप में) "स्टार्ट \ सर्च बॉक्स" से "cmd" दर्ज करें और फिर "cmd.exe" पर राइट-क्लिक करें और "Run as Administrator" चुनें।

  2. निम्न पाठ दर्ज करें फिर Enter दबाएँ।

    netstat -abno

    -एक सभी कनेक्शन और सुनने के बंदरगाहों को प्रदर्शित करता है।

    बी प्रत्येक कनेक्शन या श्रवण पोर्ट बनाने में शामिल निष्पादन योग्य प्रदर्शित करता है। कुछ मामलों में जाने-माने निष्पादनकर्ता कई स्वतंत्र घटकों की मेजबानी करते हैं, और इन मामलों में कनेक्शन बनाने या सुनने के बंदरगाह में शामिल घटकों के अनुक्रम को प्रदर्शित किया जाता है। इस मामले में निष्पादन योग्य नाम नीचे [] में है, शीर्ष पर वह घटक है जिसे यह कहा जाता है, और तब तक जब तक टीसीपी / आईपी नहीं पहुंच जाता। ध्यान दें कि यह विकल्प समय लेने वाला हो सकता है और तब तक विफल रहेगा जब तक आपके पास पर्याप्त अनुमति न हो।

    -एन पते और पोर्ट संख्या संख्यात्मक रूप में प्रदर्शित करता है।

    -o प्रत्येक कनेक्शन के साथ जुड़े खुद की प्रक्रिया आईडी प्रदर्शित करता है।

  3. उस पोर्ट को ढूंढें जिसे आप "स्थानीय पते" के तहत सुन रहे हैं

  4. इसके तहत सीधे प्रक्रिया का नाम देखें।

नोट: कार्य प्रबंधक के तहत प्रक्रिया खोजने के लिए

  1. जिस पोर्ट को आप देख रहे हैं, उसके बगल में PID (प्रक्रिया पहचानकर्ता) पर ध्यान दें।

  2. Windows कार्य प्रबंधक खोलें।

  3. प्रक्रिया टैब चुनें।

  4. जब आपने चरण 1 में नेटस्टैट किया था, तो आपके द्वारा नोट किए गए पीआईडी ​​को देखें।

    • यदि आपको PID कॉलम नहीं दिखाई देता है, तो दृश्य / चयन कॉलम पर क्लिक करें। PID का चयन करें।

    • सुनिश्चित करें कि "सभी उपयोगकर्ताओं से प्रक्रिया दिखाएं" चयनित है।


56

पीआईडी ​​और छवि नाम प्राप्त करें

केवल एक आदेश का उपयोग करें:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"

जहां 9000आपके पोर्ट नंबर को बदला जाना चाहिए।

उत्पादन कुछ इस तरह शामिल होंगे:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
java.exe                      5312 Services                   0    130,768 K

स्पष्टीकरण:

  • यह निम्न कमांड के आउटपुट से हर लाइन के माध्यम से पुनरावृत्ति करता है:

    netstat -aon | findstr 9000
    
  • हर पंक्ति से, PID ( %a- नाम यहाँ महत्वपूर्ण नहीं है) निकाला जाता है (PID उस लाइन में 5वें तत्व है) और निम्नलिखित कमांड को पास किया गया

    tasklist /FI "PID eq 5312"
    

आप चाहते हैं छोड़ हैडर और की वापसी कमांड प्रॉम्प्ट , तो आप उपयोग कर सकते हैं:

echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on

आउटपुट:

java.exe                      5312 Services                   0    130,768 K

2
अच्छा जवाब है, लेकिन आपको इसे बदलना चाहिए findstr :9000यदि नहीं, तो आपको एप्लिकेशन भी मिलेंगे जिसमें नंबर शामिल हैं (जैसे कि जब आप "80" खोजते हैं तो आपको पोर्ट 80, 800, 8000 पर भी ऐप मिलेंगे)।
Radon8472

48

पहले हमें उस विशेष कार्य की प्रक्रिया आईडी मिलती है जिसे हमें पोर्ट फ्री में प्राप्त करने के लिए समाप्त करने की आवश्यकता है:

प्रकार

netstat -n -a -o

Windows कमांड लाइन प्रॉम्प्ट (cmd) में इस कमांड को निष्पादित करने के बाद, उस पीड को चुनें, जो मुझे लगता है कि अंतिम कॉलम है। मान लीजिए यह 3312 है।

अब टाइप करें

taskkill /F /PID 3312

अब आप netstatकमांड टाइप करके चेक को क्रॉस कर सकते हैं ।

नोट: कभी-कभी विंडोज़ आपको इस कमांड को सीधे सीएमडी पर चलाने की अनुमति नहीं देता है, इसलिए पहले आपको इन चरणों के साथ जाने की आवश्यकता है:

प्रारंभ मेनू से -> कमांड प्रॉम्प्ट (कमांड प्रॉम्प्ट पर राइट क्लिक करें, और व्यवस्थापक के रूप में चलाएं)


30

प्रत्येक कनेक्शन से जुड़ी सभी स्वयं की प्रक्रिया आईडी की सूची प्राप्त करने के लिए:

netstat -ao |find /i "listening"

यदि किसी भी प्रक्रिया को मारना चाहते हैं, तो आईडी और इस कमांड का उपयोग करें, ताकि पोर्ट मुफ्त हो जाए

Taskkill /F /IM PID of a process

1
यह यूडीपी बंदरगाहों को सुनने के लिए
जिम्मेदार नहीं है

27

विंडोज में PID से पोर्ट नंबर प्राप्त करना बहुत सरल है।

निम्नलिखित कदम हैं:

  1. चलाने के लिए → टाइप करें cmd ​​→ दबाएँ Enter

  2. निम्नलिखित कमांड लिखें ...

    netstat -aon | findstr [port number]
    

    (नोट: चौकोर कोष्ठक शामिल न करें।)

  3. प्रेस Enter...

  4. फिर cmd आपको PID के साथ उस पोर्ट पर चलने वाली सेवा का विवरण देगा।

  5. टास्क मैनेजर खोलें और सर्विस टैब को हिट करें और उस PID को cmd के साथ मिलाएं, और यही वह है।


18

बस एक कमांड शेल खोलें और टाइप करें (आपका पोर्ट 123456 है):

netstat -a -n -o | find "123456"

आपको अपनी जरूरत की हर चीज दिखाई देगी।

हेडर हैं:

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:37             0.0.0.0:0              LISTENING       1111

यह यहाँ बताया गया है


1
FYI करें / किसी के लिए भी दिलचस्पी: यह या तो findstr 123456(उद्धरण के बिना) या find "123456"(उद्धरण के साथ) है। (@ जोश)
केविन क्रूज़सेन

18

यह पता लगाने के लिए कि कौन सा पोर्ट किस विशिष्ट प्रक्रिया (PID) का उपयोग कर रहा है:

netstat -anon | findstr 1234

जहां 1234 आपकी प्रक्रिया का PID है। [अपने आवेदन के पीआईडी ​​का पता लगाने के लिए कार्य प्रबंधक → सेवाओं / प्रक्रियाओं टैब पर जाएं।]


1
यह ध्यान दिया जाना चाहिए कि आपको -nदो बार ध्वज सेट की आवश्यकता नहीं है । -anoपर्याप्त है।
mwieczorek

16

Windows 10 या Windows Server 2016 पर PowerShell 5 के साथ, चलाएँ Get-NetTCPConnection cmdlet । मुझे लगता है कि यह पुराने विंडोज संस्करणों पर भी काम करना चाहिए।

डिफ़ॉल्ट आउटपुट में Get-NetTCPConnectionकिसी कारण से प्रक्रिया आईडी शामिल नहीं है और यह थोड़ा भ्रमित है। हालाँकि, आप इसे हमेशा आउटपुट स्वरूपित करके प्राप्त कर सकते हैं। जिस प्रॉपर्टी की आपको तलाश है, वह है OwningProcess

  • यदि आप पोर्ट 443 पर सुन रहे प्रक्रिया की आईडी का पता लगाना चाहते हैं, तो यह कमांड चलाएँ:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-List
    
    LocalAddress   : ::
    LocalPort      : 443
    RemoteAddress  : ::
    RemotePort     : 0
    State          : Listen
    AppliedSetting :
    OwningProcess  : 4572
    CreationTime   : 02.11.2016 21:55:43
    OffloadState   : InHost
    
  • उन गुणों के साथ तालिका में आउटपुट स्वरूपित करें, जिनकी आप तलाश करते हैं:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-Table -Property LocalAddress, LocalPort, State, OwningProcess
    
    LocalAddress LocalPort  State OwningProcess
    ------------ ---------  ----- -------------
    ::                 443 Listen          4572
    0.0.0.0            443 Listen          4572
    
  • यदि आप प्रक्रिया का नाम जानना चाहते हैं, तो यह कमांड चलाएँ:

    PS C:\> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
    143      15     3448      11024              4572   0 VisualSVNServer
    


13

कमांड में टाइप करें: netstat -aon | findstr :DESIRED_PORT_NUMBER

उदाहरण के लिए, यदि मैं पोर्ट 80 खोजना चाहता हूं: netstat -aon | findstr :80

यह उत्तर मूल रूप से इस प्रश्न पर पोस्ट किया गया था ।


11

netstat:

  • -a सभी कनेक्शन और सुनने वाले बंदरगाहों को प्रदर्शित करता है
  • -b निष्पादनयोग्य प्रदर्शित करता है
  • -एन स्टॉप रिज़ॉल्यूशन होस्टनाम (संख्यात्मक रूप)
  • -अपनी खुद की प्रक्रिया

    netstat -bano | findstr "7002"
    
    netstat -ano > ano.txt 
    

Currports उपकरण खोज और फिल्टर करने में मदद करता


11
  1. कमांड प्रॉम्प्ट खोलें - स्टार्ट → रनcmd, या स्टार्ट मेन्यू → सभी प्रोग्राम्सएसेसरीजकमांड प्रॉम्प्ट

  2. प्रकार

    netstat -aon | findstr '[port_number]'
    

[port_number]उस वास्तविक पोर्ट नंबर से बदलें जिसे आप जांचना चाहते हैं और हिट करना चाहते हैं Enter

  1. यदि पोर्ट किसी एप्लिकेशन द्वारा उपयोग किया जा रहा है, तो उस एप्लिकेशन का विवरण दिखाया जाएगा। वह संख्या, जिसे सूची के अंतिम कॉलम में दिखाया गया है, उस एप्लिकेशन का PID (प्रोसेस आईडी) है। इस पर ध्यान दें।
  2. प्रकार

    tasklist | findstr '[PID]'
    

[PID]उपरोक्त चरण से संख्या के साथ बदलें और हिट करें Enter

  1. आपको एप्लिकेशन नाम दिखाया जाएगा जो आपके पोर्ट नंबर का उपयोग कर रहा है।

3
विन 10 पर: चरण 2 और चरण 4 में आपका आदेश तब तक काम नहीं करता है जब तक आप सरल उद्धरणों को दोहरे उद्धरणों से प्रतिस्थापित नहीं करते हैं। कहना चाहिए netstat -aon | खोज "[port_number]"
लियोनार्डो लोपेज़

इस समाधान के लिए किसी उच्चीकृत अनुमति की आवश्यकता नहीं है। टी.के.एस!
मिलाप

10

netstat -aoऔर netstat -abआपको आवेदन बताता है, लेकिन यदि आप एक सिस्टम प्रशासक नहीं हैं तो आपको "अनुरोधित ऑपरेशन को उत्थान की आवश्यकता होगी"।

यह आदर्श नहीं है, लेकिन यदि आप Sysinternals ' प्रोसेस एक्सप्लोरर का उपयोग करते हैं तो आप विशिष्ट प्रक्रियाओं के गुणों पर जा सकते हैं और टीसीपी टैब को देख सकते हैं कि क्या वे उस पोर्ट का उपयोग कर रहे हैं जिसमें आप रुचि रखते हैं। यह एक सुई और हिस्टैक का एक सा है। बात, लेकिन शायद यह किसी की मदद करेंगे ...


यदि आप एक व्यवस्थापक नहीं हैं, तो आप किसी भी प्रक्रिया से यह जानकारी प्राप्त करने के लिए प्रोसेस एक्सप्लोरर (या यहां तक ​​कि विंडोज टास्क मैनेजर> संसाधन प्रबंधक) का उपयोग करने में सक्षम नहीं होंगे जो आपके साथ शुरू होने के लिए नहीं है।
हाबिल

9

मैं NirSoft से CurrPorts की सिफारिश करता हूं

CurrPorts प्रदर्शित परिणामों को फ़िल्टर कर सकते हैं। TCPView में यह सुविधा नहीं है।

नोट: आप किसी प्रक्रिया के सॉकेट कनेक्शन पर राइट क्लिक कर सकते हैं और "चयनित टीसीपी कनेक्शन बंद करें" का चयन कर सकते हैं (आप इसे TCPView में भी कर सकते हैं)। वीपीएन स्विच करने के बाद अक्सर यह मेरे और आउटलुक और Lync के साथ कनेक्टिविटी के मुद्दों को ठीक करता है। CurrPorts के साथ, आप कमांड लाइन से "/ करीब" पैरामीटर के साथ भी कनेक्शन बंद कर सकते हैं।


7

एक एकल-लाइन समाधान जो मुझे मदद करता है वह यह है। अपने बंदरगाह के साथ बस 3000 विकल्प:

$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; Stop-Process $P.Id

संपादित करें: अधिक PowerShell जैसी भाषा के लिए परिवर्तित killकिया गयाStop-Process


6
आप शायद प्रक्रिया को स्वचालित रूप से मारना नहीं चाहते हैं। मैं उस मार को अलग करूंगा और समझाऊंगा। कुछ गरीब उपयोगकर्ता कॉपी-पेस्ट करना नहीं चाहते हैं जो ध्यान से बिना सोचे समझे।
TinkerTenorSoftwareGuy

1
और अगर आप पूर्ण PowerShell समाधान परिवर्तन के लिए जा रहे हैं, तो स्टॉप-प्रोसेस को Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
मारें

6

इन उपकरणों का पालन करें : cmd से : व्यवस्थापक विशेषाधिकारों के C:\> netstat -anobसाथ ।

प्रक्रिया एक्सप्लोरर

प्रक्रिया डंप

पोर्ट मॉनिटर

सभी sysinternals.com से।

यदि आप प्रत्येक प्रक्रिया के तहत प्रक्रिया और थ्रेड्स जानना चाहते हैं, तो मैं इसके बारे में जानने की सलाह देता हूं wmic । यह एक अद्भुत कमांड-लाइन टूल है, जो आपको जितना पता चल सकता है, उससे कहीं अधिक आपको देता है।

उदाहरण:

c:\> wmic process list brief /every:5

उपरोक्त कमांड प्रत्येक 5 सेकंड में एक पूरी प्रक्रिया सूची दिखाएगा। अधिक जानने के लिए, आप बस /?विंडोज़ के कमांड के साथ जा सकते हैं , उदाहरण के लिए,

c:\> wmic /?
c:\> wmic process /?
c:\> wmic prcess list /?

इत्यादि इत्यादि। :)


पोर्टमोन (पोर्ट मॉनिटर के पीछे की कड़ी) धारावाहिक और समानांतर बंदरगाहों की निगरानी के लिए है , न कि नेटवर्क बंदरगाहों के लिए।
जेम्स

6

उपयोग:

netstat -a -o

यह किसी विशेष पोर्ट पर चल रही प्रक्रिया के PID को दिखाता है।

प्रक्रिया आईडी को ध्यान में रखें और टास्क मैनेजर और सेवाओं या विवरण टैब पर जाएं और उस प्रक्रिया को समाप्त करें जिसमें वही पीआईडी ​​है।

इस प्रकार आप विंडोज में किसी विशेष पोर्ट पर चलने वाली प्रक्रिया को मार सकते हैं।


6

PowerShell का उपयोग करने वालों के लिए, प्रयास करें Get-NetworkStatistics:

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552


5

PowerShell का उपयोग करना ... ... यह आपका मित्र होगा (आपके पोर्ट नंबर के साथ 8080 बदलें):

 netstat -abno | Select-String -Context 0,1 -Pattern 8080

नमूना उत्पादन

>   TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING         2920
   [tnslsnr.exe]
>   TCP    [::]:8080              [::]:0                 LISTENING         2920
   [tnslsnr.exe]

तो इस उदाहरण में tnslsnr.exe (OracleXE डेटाबेस) पोर्ट 8080 पर सुन रहा है।

त्वरित स्पष्टीकरण

  • Select-Stringnetstatप्रासंगिक लाइनों के लिए लंबा आउटपुट को फ़िल्टर करने के लिए उपयोग किया जाता है ।
  • -Pattern एक नियमित अभिव्यक्ति के खिलाफ प्रत्येक पंक्ति का परीक्षण करता है।
  • -Context 0,1 प्रत्येक पैटर्न मैच के लिए 0 लीडिंग लाइन और 1 ट्रेलिंग लाइन आउटपुट करेगा।

2

विंडोज के लिए, यदि आप 1234 को पोर्ट सुनना या कनेक्ट करना चाहते हैं, तो cmd प्रॉम्प्ट पर निम्नलिखित को निष्पादित करें:

netstat -na | find "1234"

1

नीचे दी गई बैच स्क्रिप्ट का उपयोग करें जो एक तर्क के रूप में एक प्रक्रिया का नाम लेता है और netstatप्रक्रिया के लिए आउटपुट देता है।

@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End

:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------

netstat -ano |findstr %z%
goto :eof

:End

1

जानकारी और मार के जवाब के आधार पर , मेरे लिए यह एक कमांड में उन्हें जोड़ना उपयोगी है । और आप इसे cmd से प्रक्रिया के बारे में जानकारी प्राप्त करने के लिए चला सकते हैं जो दिए गए पोर्ट पर सुनता है (उदाहरण 8080):

for /f "tokens=3 delims=LISTENING" %i  in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @tasklist /nh /fi "pid eq %i"

या यदि आप इसे मारना चाहते हैं:

for /f "tokens=3 delims=LISTENING" %i  in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @Taskkill /F /IM %i

तुम भी (वे थोड़ा भिन्न होगा - की जगह एक बल्ला फ़ाइल में उन आदेश डाल सकते हैं %iके लिए %%i):

फ़ाइल portInfo.bat

for /f "tokens=3 delims=LISTENING" %%i  in (
    'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @tasklist /nh /fi "pid eq %%i"

फ़ाइल portKill.bat

for /f "tokens=3 delims=LISTENING" %%i  in (
    'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @Taskkill /F /IM %%i

फिर आप cmd से यह कर सकते हैं:

portInfo.bat 8080

या

portKill.bat 8080


1
यह एक उपयोगी स्क्रिप्ट हो सकती है। हालांकि, मैंने इसे सीएमडी के साथ-साथ पावरस्ले 6 में भी किस्मत आजमाई। शायद आप थोड़ा और विवरण प्रदान करके अपने उत्तर को बेहतर बना सकते हैं।
मैनफ्रेड

क्या पहला भाग काम कर रहा है? क्या यह केवल "बल्ले" की समस्या है? पासिंग वैरिएबल में कुछ अंतर हैं: (%% i)
lczapski

.\portInfo.bat 800C:\work>for /F "tokens=3 delims=LISTENING" %i in ('netstat -ano | findStr "800" | findStr "["') do (tasklist /fi "pid eq %i" ) C:\work>(tasklist /fi "pid eq 4" ) Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System 4 Services 0 1,820 K
मैनफ्रेड मैंने

क्षमा करें, कोई भाग्य नहीं। मैंने उस कमांड को एक पॉवरशेल portInfo.batटर्मिनल में स्थित एक फ़ाइले में डाल दिया , फिर निष्पादित किया गया .\portInfo.bat 8080। आउटपुट केवल बैच फ़ाइल की सामग्री थी। बहुत अच्छी तरह से मैं कुछ अनदेखी कर रहा हूँ। ध्यान दें, मैं विंडोज़ 10 पर PowerShell 6.2.3 का उपयोग कर रहा हूं। मैंने इसे नियमित कमांड प्रॉम्प्ट में भी आज़माया था, लेकिन परिणाम समान था: स्क्रिप्ट की सामग्री का आउटपुट। मुझे यकीन है कि इस काम को करने के लिए मुझे एक महत्वपूर्ण जानकारी याद आ रही है।
मैनफ्रेड

1
क्यों नहीं जोड़ /nh: @tasklist /nh /fi "pid eq %i"? और ठीक दरवाजा:Findstr ":8080"
यह

0

मेरे मामले में पोर्ट (3000) का उपयोग बिल्कुल नहीं किया गया था और यह नेटस्टैट में दिखाई नहीं देता था। परंतु! विंडोज के लिए अनइंस्टालर डॉकर ने इस मुद्दे को हल कर दिया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.