Şu anda Windows'ta localhost üzerinde bir bağlantı noktası kullanarak işlemi nasıl öldürebilirim?


Yanıtlar:


1056

Aşama 1:

Cmd.exe dosyasını açın (not: yönetici olarak çalıştırmanız gerekebilir , ancak bu her zaman gerekli değildir), ardından aşağıdaki komutu çalıştırın:

netstat -ano | findstr :PORT_NUMBER

(PORT_NUMBER yerine istediğiniz bağlantı noktası numarasını girin, ancak iki noktayı saklayın)

Kırmızı daire içine alınmış alan PID'yi (işlem tanımlayıcı) gösterir. İstediğiniz bağlantı noktasını kullanan işlemin PID'sini bulun.

Adım 2:

Ardından, aşağıdaki komutu çalıştırın:

taskkill /PID PID /F

(Bu sefer iki nokta üst üste yok)

Son olarak, "Adım 1" deki komutu yeniden çalıştırarak işlemin başarılı olup olmadığını kontrol edebilirsiniz. Başarılı olursa, bu bağlantı noktası numarası için başka arama sonucu görmemelisiniz.


çalışmıyor. still process is display
Hardik Mandankaa

16
Mükemmel çalışıyor. Benim durumumda, Tomcat 8080 numaralı bağlantı noktasında koşuyordu ve Bahar uygulamamı tekrar başlatmam gerekiyordu. i.imgur.com/aVwSYvR.png Çok teşekkür ederim.
Hugo LM

16
Taskkill'i çalıştırırken kaçış karakterleri girmek zorunda kaldım:taskkill //PID 12552 //F
Robert

1
kabul edilen cevap, başarısızlıkla yeniden başlatılacak şekilde ayarlanmış hizmetler için çalışmayacaktır (bu linux değildir)
nurettin

1
sanırım PORT_NUMBER demek değil PORT_NUMBER değiltaskkill /PID PORT_NUMBER /F
Marcin Kulik

132

Adım 1 ( KavinduWije tarafından yazılan kabul edilen cevapta da aynıdır ):

netstat -ano | findstr :yourPortNumber

2. Adımda şu şekilde değiştirin:

tskill typeyourPIDhere 

Not : taskkillbazı git bash terminalinde çalışmıyor


1
benim için bulamadım
Tzvi Gregory Kaidanov

1
@TzviGregoryKaidanov hangi sorunla karşı karşıyasınız?
afsarkhan10182

1
teşekkürler, tkkill için taskkill değiştirerek çalıştı
Md Shoaib Alam

1
Benim için işe yarayan çözüm bu. GIT Bash kullanıyorum.
dxhans5

1
Bu, ilk komutun çıktısını seond'a geçirilerek yapılabilir mi?
James

115

Windows 10 varsayılan araçlarıyla:

  • Adım bir:

Windows PowerShell'i Yönetici olarak açın

  • İkinci adım:

Bağlantı noktası 8080 için PID'yi (ProcessID) bulun:

netstat -aon | findstr 8080

TCP 0.0.0.0:8080 0.0.0.0:0 DİNLE 77777

  • Adım üç:

Zombi sürecini öldür:

taskkill /f /pid 77777

burada "77777" PID'nizdir


1
Eğer cmd çıkışını görüntüleme ve daha sonra manuel olarak yeni komut yazma imkanı yoksa, süreci otomatik hale getirme ve bu iki komutu bir yarasa dosyasında nasıl birleştirebilirim?
Serob_b

3
@Serob_b set /p port="Enter port: "-> Giriş bağlantı noktası FOR /F "tokens=5" %%T IN ('netstat -aon ^| findstr %port% ') DO ( SET /A ProcessId=%%T) &GOTO SkipLine :SkipLine-> PID'yi değişkene ayıklar taskkill /f /pid %ProcessId%-> Görevi öldürür cmd /k -> Pencereyi açık tut
Vikrant

94

GitBash kullanıyorsanız

Adım bir:

netstat -ano | findstr :8080

İkinci adım:

taskkill /PID typeyourPIDhere /F 

( /Fsüreci zorla sonlandırır)


çift ​​benim için işe yaramadı
kylexy1357

2
@ kylexy1357 tek bir eğik çizgi ile deneyin. "Çift eğik çizgi" bazı kabuklar için gerekli olmayan / karakterinden önce gelen bir kaçış karakteridir
Robert

27

In Windows PowerShell sürüm 1 veya daha sonra bağlantı noktası 3000 tipine bir süreci durdurmak için:

Durdurma İşlemi (, (netstat -ano | findstr: 3000) .split () | foreach {$ [$ .length-1]}) -Force


@Morganpdx tarafından önerildiği gibi burada daha fazla PowerShell-ish, daha iyi sürüm:

Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000) .OwningProcess -Force


'Stop-Process' is not recognized as an internal or external command,
Yeşil

3
Bunun işe yaradığını buluyorum:Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
morganpdx

1
@Green Windows PowerShell'de komutu çalıştırmanız gerekiyor
todorm

1
ilk hata, seconf benim için çalıştı
Tom

24

Komut satırında kullanım için:

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

Bat dosyasında kullanım için:

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

1
Bunu bir .bat ile yapmak istiyorsanız, %% a için% a yerine
Mahesh Narwade

23

Bağlantı noktası numarasını zaten biliyorsanız, işleme (SIGTERM) bir yazılım sonlandırma sinyali göndermeniz yeterli olacaktır:

kill $(lsof -t -i :PORT_NUMBER)

Bağlantı noktasının IPv4 kullandığını biliyorsanız, bir lsof -nt -i4TCP:9001de yapabilirsiniz .
Josh Habdas

10

Windows kullanıcıları için, kullanımdaki bağlantı noktalarını kolayca öldürmek için CurrPorts aracını kullanabilirsiniz :

Resim açıklamasını buraya girin


10

Windows üzerinde zookeeper çalıştırıyordum ve zookeeper-stop.sh kullanarak 2181 portunda ZooKeeper çalışmasını durduramadım , bu yüzden taskkill için bu çift eğik çizgi "//" yöntemini denedim. İşe yaradı

     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

Windows Terminal kullanıyorsanız , öldürme işlemi biraz daha az sıkıcı olabilir. Windows terminalini kullanıyorum kill PIDve yeni Windows Terminali belirli bash komutlarını desteklediği için bağlantı noktasındaki işlemleri öldürmek için iyi çalışıyor. Örneğin:kill 13300

Yani, tüm süreç şöyle görünecek-

  • Windows Terminalini aç
  • İşlemleri öldürmek istediğiniz bağlantı noktasında çalışan işlemleri göstermek için aşağıdaki komutu yazın. netstat -ano | findstr :PORT
  • İşlemi öldürmek için aşağıdakini yazın. kill PID

Örneğin:

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>

Boş döndüğü bağlantı noktasındaki işlemleri listelemek için ilk komutu yazdığımda bakın. Bu şu anda tüm süreçlerin öldürüldüğü anlamına geliyor.


Bunun işe yaradığını biliyorum çünkü test ettim, etrafındaki belgeleri bulmaya çalışıyorum, var mı?
DanStarns

@DanStarns, şimdiye kadar sadece bunu buldum! docs.microsoft.com/tr-tr/windows/terminal
lazycipher

Zaman ayırdığınız için teşekkürler, aradığım sayfa değil, terminalde sağlanan tüm işlevlerin bulunduğu bir sayfa kill. Ben bulursam buraya göndereceğim.
DanStarns

1
Şimdilik bu konuda pek bir şey bulamadım. Bir şey bulursanız lütfen gönderin.
lazycipher

4

Bir bat dosyası çalıştırarak yapabilirsiniz:

@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

Python kullanarak yapmak istiyorsanız: check Python'da örneğin 8080 gibi belirli bir bağlantı noktasını dinleyen işlemi öldürmek mümkün müdür?

Smunk'ın cevabı iyi çalışıyor. Kodunu burada tekrarlıyorum:

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

Bu, Google Cloud'da belirli bir bağlantı noktası numarasını kullanan bir soket için de işe yaradı! Thanks a ton
peevesy

0

GitBash kullanan tek hat çözümü :

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

8080'i sunucunuzun dinlediği bağlantı noktası ile değiştirin .

Sık kullanmanız gerekiyorsa ~/.bashrc, işlevinize eklemeyi deneyin :

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

ve sadece koş

killport 8080

-1

Aşağıdaki komutu kullanarak IIS'yi yeniden başlatarak bunu önleyebiliriz:

IISRESET
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.