it-swarm.it

Come uccidere il processo che utilizza attualmente una porta su localhost in Windows?

Come rimuovere il processo/applicazione corrente che è già assegnato a una porta?

Ad esempio: localhost:8080

234
KavinduWije

Passo 1  

Esegui la riga di comando come amministratore. Quindi esegui il comando di menzione seguente . Inserisci il tuo numero di porta in yourPortNumber

netstat -ano | findstr: yourPortNumber

L'area cerchiata colorata di rosso mostra il PID (identificativo del processo)

Passo 2

Quindi esegui questo comando dopo aver identificato il PID. 

taskkill/PID typeyourPIDhere / F

Post scriptum Eseguire di nuovo il primo comando per verificare se il processo è ancora disponibile o meno. Otterrai una riga vuota se il processo è terminato con successo.

578
KavinduWije

Passaggio 1 (lo stesso è accettato rispondi scritto da KavinduWije ):

netstat -ano | findstr :yourPortNumber

Modifica nel passaggio 2 a:

tskill typeyourPIDhere 

Questo dato che taskkill non funziona in qualche comando git bash

76
afsarkhan10182

Se si utilizza GitBash

Primo passo:

netstat -ano | findstr :8080

Passo due: 

taskkill /PID typeyourPIDhere /F 

(/F termina forzatamente il processo)

62
Ara Yaghsizian

In Windows PowerShell versione 1 o successiva per interrompere un processo sul tipo di porta 3000:

Stop-Process (, (netstat -ano | findstr: 3000) .split () | foreach {$ [$ .length-1]}) -Force


Come suggerito da @morganpdx, ecco un altro PowerShell-ish, versione migliore:

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

18
todorm

Per l'uso in riga di comando:

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

Per l'uso nel file bat:

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

Con Windows 10 tstrong textools predefiniti:

1.) Trova PID (ProcessId) usando la porta 8080:

netstat -aon | findstr 8080

TCP 0.0.0.0:8080 0.0.0.0:0 ASCOLTA 11980

2.) Uccidi il processo zombie:

taskkill /F /PID 11980

dove "11980" è il tuo ProcessId

8
DuracellDeMonaco

Se si conosce già il numero di porta, sarà probabilmente sufficiente inviare un segnale di terminazione software al processo (SIGTERM):

kill $(lsof -t -i :PORT_NUMBER)
3
Telefonplan

Per gli utenti di Windows, puoi usare CurrPorts tool per eliminare facilmente le porte in uso  enter image description here

3
Zuhair Taha

Nel caso in cui si desideri farlo usando python: check E 'possibile in Python kill process che gira su porte specifiche, per esempio 8080? La risposta di Smunk funziona bene. Ripeto il suo codice qui:

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 
2
Kardi Teknomo

Stavo correndo zookeeper @windows, non ero in grado di fermare lo zookeeper in esecuzione alla porta 2181 usando zookeeper-stop.sh, quindi ho provato questo metodo "//" della doppia barra a taskkill. Ha funzionato 

     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.
1
sandprogrammer

Puoi farlo eseguendo un file bat:

@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
1
flopcoder

Possiamo evitarlo semplicemente riavviando IIS, usando il comando muggito.

IISRESET

0
ksrider 148