Como posso remover o processo / aplicativo atual que já está atribuído a uma porta?
Por exemplo: localhost:8080
Como posso remover o processo / aplicativo atual que já está atribuído a uma porta?
Por exemplo: localhost:8080
Respostas:
Passo 1:
Abra o cmd.exe (nota: pode ser necessário executá-lo como administrador, mas isso nem sempre é necessário) e execute o comando abaixo:
netstat -ano | findstr :PORT_NUMBER
(Substitua PORT_NUMBER pelo número da porta desejado, mas mantenha os dois pontos)

A área circulada em vermelho mostra o PID (identificador de processo). Localize o PID do processo que está usando a porta que você deseja.
Passo 2:
Em seguida, execute o seguinte comando:
taskkill /PID PID /F
(Nenhum cólon desta vez)

Por fim, você pode verificar se a operação foi bem-sucedida ou não, executando novamente o comando na "Etapa 1". Se tiver sido bem-sucedido, você não verá mais resultados de pesquisa para esse número de porta.
taskkill //PID 12552 //F
taskkill /PID PORT_NUMBER /F
Etapa 1 (o mesmo está na resposta aceita escrita por KavinduWije ):
netstat -ano | findstr :yourPortNumber
Altere na Etapa 2 para:
tskill typeyourPIDhere
Nota : taskkillnão está funcionando em algum terminal git bash
Com as ferramentas padrão do Windows 10:
Abra o Windows PowerShell como administrador
Encontre o PID (ProcessID) da porta 8080:
netstat -aon | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0↓ LISTEN 77777
Mate o processo de zumbi:
taskkill /f /pid 77777
onde "77777" é seu PID
set /p port="Enter port: "-> Porta de entrada FOR /F "tokens=5" %%T IN ('netstat -aon ^| findstr %port% ') DO ( SET /A ProcessId=%%T) &GOTO SkipLine :SkipLine-> Extrai o PID para variável taskkill /f /pid %ProcessId%-> Mata a tarefa cmd /k -> Mantenha a janela aberta
Se você estiver usando o GitBash
Passo um:
netstat -ano | findstr :8080
Passo dois:
taskkill /PID typeyourPIDhere /F
( /Ffinaliza com força o processo)
No Windows PowerShell versão 1 ou posterior, para interromper um processo na porta 3000, digite:
Processo de parada (, (netstat -ano | findstr: 3000) .split () | foreach {$ [$ .length-1]}) -Force
Conforme sugerido por @morganpdx, aqui está uma versão melhorada do PowerShell-ish:
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
Para uso na linha de comando:
for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a
Para uso em arquivo bat:
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
Se você já conhece o número da porta, provavelmente será suficiente enviar um sinal de finalização do software para o processo (SIGTERM):
kill $(lsof -t -i :PORT_NUMBER)
lsof -nt -i4TCP:9001.
Para usuários do Windows, você pode usar a ferramenta CurrPorts para eliminar facilmente as portas em uso:
Eu estava executando o zookeeper no Windows e não consegui parar o ZooKeeper na porta 2181 usando o zookeeper-stop.sh, então tentei esse método de barra dupla "//" para matar tarefas. Funcionou
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.
Se você estiver usando o Terminal do Windows , o processo de extermínio pode ser um pouco menos tedioso. Estou usando o terminal do Windows e kill PIDfunciona bem para eu matar processos na porta, pois o novo Terminal do Windows suporta certos comandos do bash. Por exemplo:kill 13300
Portanto, o processo completo terá a seguinte aparência:
netstat -ano | findstr :PORTkill PIDPor exemplo:
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>
Veja quando eu digitei o primeiro comando para listar os processos na porta que retornou vazia. Isso significa que todos os processos estão mortos agora.
kill. Vou postar aqui se eu encontrar.
Caso você queira fazer isso usando Python: marque É possível no python matar o processo que está escutando em uma porta específica, por exemplo 8080?
A resposta do Smunk funciona muito bem. Repito o código aqui:
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
Solução de uma linha usando GitBash :
tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`
Substitua 8080 pela porta que seu servidor está ouvindo.
Se você precisar usá-lo com frequência, tente adicionar à sua ~/.bashrcfunção:
function killport() {
tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`
}
e simplesmente corra
killport 8080
Para evitar isso, basta reiniciar o IIS, usando o comando abaixo:
IISRESET