Bir bağlantı noktasına atanmış olan geçerli işlemi / uygulamayı nasıl kaldırabilirim?
Örneğin: localhost:8080
Bir bağlantı noktasına atanmış olan geçerli işlemi / uygulamayı nasıl kaldırabilirim?
Örneğin: localhost:8080
Yanıtlar:
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.
taskkill //PID 12552 //F
taskkill /PID PORT_NUMBER /F
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 : taskkill
bazı git bash terminalinde çalışmıyor
Windows 10 varsayılan araçlarıyla:
Windows PowerShell'i Yönetici olarak açın
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
Zombi sürecini öldür:
taskkill /f /pid 77777
burada "77777" PID'nizdir
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
GitBash kullanıyorsanız
Adım bir:
netstat -ano | findstr :8080
İkinci adım:
taskkill /PID typeyourPIDhere /F
( /F
süreci zorla sonlandırır)
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,
Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
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
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)
lsof -nt -i4TCP:9001
de yapabilirsiniz .
Windows kullanıcıları için, kullanımdaki bağlantı noktalarını kolayca öldürmek için CurrPorts aracını kullanabilirsiniz :
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.
Windows Terminal kullanıyorsanız , öldürme işlemi biraz daha az sıkıcı olabilir. Windows terminalini kullanıyorum kill PID
ve 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-
netstat -ano | findstr :PORT
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.
kill
. Ben bulursam buraya göndereceğim.
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
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
Aşağıdaki komutu kullanarak IIS'yi yeniden başlatarak bunu önleyebiliriz:
IISRESET