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


489

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

उदाहरण के लिए: localhost:8080

जवाबों:


1053

चरण 1:

Cmd.exe खोलें (ध्यान दें: हो सकता है एक प्रशासक के रूप इसे चलाने के लिए की जरूरत है, लेकिन यह हमेशा जरूरी नहीं है), तो आदेश नीचे चलाएँ:

netstat -ano | findstr :PORT_NUMBER

(जिस पोर्ट नंबर को आप चाहते हैं उसके साथ PORT_NUMBER बदलें, लेकिन कोलन रखें)

लाल में परिक्रमा क्षेत्र पीआईडी ​​(प्रक्रिया पहचानकर्ता) दिखाता है। उस प्रक्रिया की पीआईडी ​​का पता लगाएँ जो आपके इच्छित पोर्ट का उपयोग कर रही है।

चरण 2:

अगला, निम्न कमांड चलाएँ:

taskkill /PID PORT_NUMBER /F

(इस बार कोई कोलन नहीं)

अंत में, आप जांच सकते हैं कि ऑपरेशन "चरण 1" में फिर से चल रहा है या नहीं। यदि यह सफल रहा तो आपको उस पोर्ट नंबर के लिए कोई और खोज परिणाम नहीं देखना चाहिए।


काम नहीं कर रहा। अभी भी प्रक्रिया प्रदर्शित होती है
हार्दिक मंडनका

16
पूरी तरह से काम करना। मेरे मामले में, टॉमकैट 8080 बंदरगाह में चल रहा था और मुझे अपने स्प्रिंग ऐप को फिर से लॉन्च करने की आवश्यकता थी। i.imgur.com/aVwSYvR.png बहुत बहुत धन्यवाद।
ह्यूगो एलएम

16
टास्ककिल चलाते समय मुझे बच के पात्रों में प्रवेश करना था:taskkill //PID 12552 //F
रॉबर्ट

1
स्वीकृत उत्तर उन सेवाओं के लिए काम नहीं करेगा जो विफलता पर पुनः आरंभ करने के लिए स्थापित हैं (यह लिनक्स नहीं है)
nurettin

1
मुझे लगता है कि आपका मतलब PID_NUMBER है और PORT_NUMBER नहीं हैtaskkill /PID PORT_NUMBER /F
Marcin Kulik

132

चरण 1 ( काविंदविजय द्वारा लिखित स्वीकृत उत्तर में वही है ):

netstat -ano | findstr :yourPortNumber

चरण 2 में बदलें:

tskill typeyourPIDhere 

नोट : taskkillकुछ गिट बास टर्मिनल में काम नहीं कर रहा है


1
मुझे यह नहीं मिला
त्ज़्वी ग्रेगरी केदानोव

1
@TzviGregoryKaidanov आप किस मुद्दे का सामना कर रहे हैं?
afsarkhan10182 10

1
धन्यवाद, इसने टास्किल को tskill में बदलकर काम किया
Md शोएब आलम

1
यह वह उपाय है जो मेरे लिए काम करता है। मैं जीआईटी बैश का उपयोग कर रहा हूं।
dxhans5

1
क्या यह पहले कमांड के उत्पादन को seond में पास करके किया जा सकता है?
जेम्स

115

विंडोज 10 डिफ़ॉल्ट टूल के साथ:

  • पहला कदम:

व्यवस्थापक के रूप में Windows PowerShell खोलें

  • दूसरा चरण:

पोर्ट 8080 के लिए PID (ProcessID) ढूंढें:

netstat -aon | findstr 8080

टीसीपी 0.0.0.0:8080 0.0.0.0 लिस्टेन 77777 बढ़ रही है

  • तीसरा कदम:

ज़ोंबी प्रक्रिया को मार डालो:

taskkill /f /pid 77777

जहाँ "77777" आपका पीआईडी ​​है


1
यदि cmd आउटपुट को देखने और फिर मैन्युअल रूप से लिखने की कोई संभावना नहीं है, तो प्रक्रिया को स्वचालित कैसे करें और इन दोनों कमांड को एक बैट फाइल में एक साथ मिलाएं?
Serob_b

3
@Serob_b set /p port="Enter port: "-> इनपुट पोर्ट FOR /F "tokens=5" %%T IN ('netstat -aon ^| findstr %port% ') DO ( SET /A ProcessId=%%T) &GOTO SkipLine :SkipLine-> अर्क पीआईडी ​​को चर में taskkill /f /pid %ProcessId%-> कार्य को मारता है cmd /k -> खिड़की खुली रखें
विक्रांत

94

यदि आप GitBash का उपयोग कर रहे हैं

पहला कदम:

netstat -ano | findstr :8080

दूसरा चरण:

taskkill /PID typeyourPIDhere /F 

( /Fबलपूर्वक प्रक्रिया को समाप्त करता है)


मेरे लिए डबल
स्लेशेड

2
@ kylexy1357 एकल स्लैश के साथ प्रयास करें। "डबल स्लैश" एक भागने वाला चरित्र है जो / से पहले होता है, जिसे कुछ गोले के लिए आवश्यक नहीं है
रॉबर्ट

27

में विंडोज PowerShell संस्करण 1 या बाद में पोर्ट 3000 प्रकार पर एक प्रक्रिया को रोकने के:

स्टॉप-प्रोसेस (((netstat -ano | findstr: 3000) .plplit () | foreach {$ [$ .length -1]}) -F


जैसा कि @morganpdx ने यहां बताया है कि 'अधिक पावरस्ले-ईश, बेहतर संस्करण:

स्टॉप-प्रोसेस -Id (Get-NetTCPConnection -LocalPort 3000) .OwningProcess -Force


'Stop-Process' is not recognized as an internal or external command,
हरा

3
मुझे लगता है कि यह काम करता है:Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
morganpdx

1
@Green आपको Windows PowerShell
todorm

1
पहले एक त्रुटि, seconf ने मेरे लिए काम किया
टॉम

24

कमांड लाइन में उपयोग के लिए:

for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a

बैट-फाइल में उपयोग के लिए:

for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a

1
यदि आप इसे एक .bat में करना चाहते हैं, तो% को %% a के लिए बदलें
Mahesh Narwade

23

यदि आप पहले से ही पोर्ट नंबर जानते हैं, तो संभवतः यह प्रक्रिया के लिए एक सॉफ्टवेयर समाप्ति संकेत भेजने के लिए पर्याप्त होगा (SIGTERM):

kill $(lsof -t -i :PORT_NUMBER)

यदि आप जानते हैं कि पोर्ट IPv4 का उपयोग कर रहा है तो आप एक lsof -nt -i4TCP:9001अच्छा काम कर सकते हैं ।
जोश हबदास

10

विंडोज उपयोगकर्ताओं के लिए, आप आसानी से उपयोग के तहत बंदरगाहों को मारने के लिए CurrPorts उपकरण का उपयोग कर सकते हैं:

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


10

मैं विंडोज़ पर ज़ुकीपर चला रहा था और ज़ूकीपर -स्टॉप.श का उपयोग करके 2181 पोर्ट पर चलने वाले ज़ूकिपर को रोकने में सक्षम नहीं था , इसलिए इस डबल स्लैश "//" की विधि को टास्ककिल करने की कोशिश की। इसने काम कर दिया

     1. netstat -ano | findstr :2181
       TCP    0.0.0.0:2181           0.0.0.0:0              LISTENING       8876
       TCP    [::]:2181              [::]:0                 LISTENING       8876

     2.taskkill //PID 8876 //F
       SUCCESS: The process with PID 8876 has been terminated.

6

यदि आप विंडोज टर्मिनल का उपयोग कर रहे हैं तो हत्या की प्रक्रिया बहुत कम थकाऊ हो सकती है। मैं विंडोज़ टर्मिनल का उपयोग कर रहा हूं और kill PIDपोर्ट पर प्रक्रियाओं को मारने के लिए मेरे लिए ठीक काम करता है क्योंकि नया विंडोज टर्मिनल कुछ बैश कमांड का समर्थन करता है। उदाहरण के लिए:kill 13300

तो, पूरी प्रक्रिया इस तरह दिखाई देगी-

  • विंडोज टर्मिनल खोलें
  • पोर्ट पर चल रही प्रक्रियाओं को दिखाने के लिए निम्न कमांड टाइप करें जो आप प्रक्रियाओं को मार रहे हैं। netstat -ano | findstr :PORT
  • प्रक्रिया को मारने के लिए टाइप करें। kill PID

उदाहरण के लिए:

PS C:\Users\username> netstat -ano | findstr :4445
  TCP    0.0.0.0:4445           0.0.0.0:0              LISTENING       7368
  TCP    [::]:4445              [::]:0                 LISTENING       7368
PS C:\Users\username> kill 7368
PS C:\Users\username> netstat -ano | findstr :4445
PS C:\Users\username>

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


मुझे पता है कि यह काम करता है क्योंकि मैंने इसका परीक्षण किया, मैं इसके चारों ओर प्रलेखन खोजने की कोशिश कर रहा हूं, क्या आपके पास कोई है?
DanStarns

@DanStarns, मैंने अब तक केवल यही पाया है! docs.microsoft.com/en-us/windows/terminal
lazycipher

आपके समय के लिए धन्यवाद, यह वह पृष्ठ नहीं है जिसकी मैं तलाश कर रहा हूं, एक पृष्ठ, जैसे टर्मिनल में प्रदान किए गए सभी फ़ंक्शन kill। अगर मुझे लगता है यहाँ बीमार पोस्ट।
DanStarns

1
मुझे अब तक इस बारे में बहुत कुछ नहीं मिला है। अगर आपको कुछ मिले तो कृपया पोस्ट करें।
लाज़िफ़ेर

4

आप एक बैट फ़ाइल चलाकर कर सकते हैं:

@ECHO OFF                                                                              
FOR /F "tokens=5" %%T IN ('netstat -a -n -o ^| findstr "9797" ') DO (
SET /A ProcessId=%%T) &GOTO SkipLine                                                   
:SkipLine                                                                              
echo ProcessId to kill = %ProcessId%
taskkill /f /pid %ProcessId%
PAUSE

4

यदि आप इसे पायथन का उपयोग कर करना चाहते हैं: तो क्या यह संभव है कि अजगर को प्रक्रिया में मारना संभव हो, जो कि विशिष्ट पोर्ट पर सुन रहा है, उदाहरण के लिए 8080?

स्मंक का उत्तर अच्छी तरह से काम करता है। मैं यहां उनका कोड दोहराता हूं:

from psutil import process_iter
from signal import SIGTERM # or SIGKILL

for proc in process_iter():
    for conns in proc.connections(kind='inet'):
        if conns.laddr.port == 8080:
            proc.send_signal(SIGTERM) # or SIGKILL
            continue

यह एक सॉकेट के लिए काम करता है जो Google क्लाउड में एक विशेष पोर्ट नंबर का उपयोग करता है! धन्यवाद एक टन
peevesy

0

GitBash का उपयोग करके एक पंक्ति समाधान :

 tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`

अपने सर्वर को सुन रहे पोर्ट के साथ 8080 बदलें ।

यदि आपको इसे अक्सर उपयोग करने की आवश्यकता है, तो अपने ~/.bashrcफ़ंक्शन को जोड़ने का प्रयास करें :

function killport() {
        tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`
}

और बस चलाते हैं

killport 8080

-1

हम नीचे दिए गए आदेश का उपयोग करके IIS को सरल पुनरारंभ करके इससे बच सकते हैं:

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