Liberando uma porta TCP / IP?


Respostas:


214

Como os outros disseram, você terá que matar todos os processos que estão ouvindo nessa porta. A maneira mais fácil de fazer isso seria usar o comando fuser (1). Por exemplo, para ver todos os processos atendendo solicitações http na porta 80 (execute como root ou use sudo):

# fuser 80/tcp

Se você quiser matá-los, basta adicionar a opção -k.


1
Achei que o envio de um pedido para o porto também limpa-lo (não sou especialista linux embora)
Matej

1
Para instalar o fusor no Debian: sudo apt-get install psmisc ( bitflop.com/document/107 )
Korneel

1
Funcionou, mas eu tive que instalar psmisc também no CentOS 7 ( sudo yum install psmisc)
Marlon Bernardes

1
kill -9 $(fuser 80/tcp 2>/dev/null)
Hanynowsky

76

Para matar uma porta específica no Linux, use o comando abaixo

sudo fuser -k Port_Number/tcp

substitua Port_Number pela sua porta ocupada.


6
Na verdade, isso mata o processo que abriu a porta e não a porta em si.
Vinayc 26/05

16

Você pode usar tcpkill(parte do dsniffpacote) para matar a conexão que está na porta que você precisa:

sudo tcpkill -9 port PORT_NUMBER

11
este só trava$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
Anentropic

16

No tipo de terminal:

netstat -anp|grep "port_number"

Ele mostrará os detalhes da porta. Vá para a última coluna. Será neste formato. Por exemplo: - PID / java

então execute:

kill -9 PID. Worked on Centos5

Para MAC:

lsof -n -i :'port-number' | grep LISTEN

Resposta da amostra:

java   4744 (PID)  test  364u  IP0 asdasdasda   0t0  TCP *:port-number (LISTEN)

e então execute:

kill -9 PID 

Trabalhou no Macbook


Obviamente, isso não funciona se a coluna PID está vazio para essa porta
Anentropic

1
... e que acontece se você não tem permissão para ver o processo ... tente sudo netstatrealmente ver os PIDs :)
Anentropic

Eu estava tentando matar uma porta em uma instância do amazon ec2 via putty cli. A Forever disse que não havia processos em execução, mas a porta (4200 para um aplicativo angular) ainda estava aberta. Esse é o único comando que funcionou para mim.
vtechmonkey

9

O "netstat --programs"comando fornecerá as informações do processo, supondo que você seja root. Então você terá que interromper o processo "ofensivo", que pode ser iniciado novamente apenas para incomodá-lo :-).

O que você está realmente tentando alcançar aqui? As soluções variarão com base nos processos que mantêm essas portas.


8

Para verificar todas as portas:

netstat -lnp

Para fechar uma porta aberta:

fuser -k port_no/tcp

Exemplo:

fuser -k 8080/tcp

Nos dois casos, você pode usar o sudocomando, se necessário.


7

Mate o processo que está ouvindo a porta em questão. Acredito que o netstat mostra os IDs de processo.


3
-anp netstat | grep <porta> última coluna tem o processo
user1747935

2

Se você realmente deseja interromper um processo imediatamente, envia um sinal KILL em vez de um sinal TERM (o último é um pedido para parar, o primeiro entra em vigor imediatamente sem nenhuma limpeza). É fácil de fazer:

kill -KILL <pid>

No entanto, esteja ciente de que, dependendo do programa que você está parando, seu estado pode ficar muito corrompido ao fazê-lo. Você normalmente deseja enviar apenas um sinal KILL quando a terminação normal não funcionar. Gostaria de saber qual é o problema subjacente que você tenta resolver e se matar é a solução certa.


0

Eu acho que a única maneira será parar o processo que abriu a porta.



-14

Desligar o computador sempre mata o processo para mim.


desligar uma máquina servidor é raro.
Waqas

23
você recebeu seu distintivo "mais engraçado"?
jplandrain

Não há necessidade de desligar o computador.
Anil Chahal

Melhor idéia de sempre 10/10
Valentin Roudge

10
ao contrário de algumas das outras respostas, isso certamente irá trabalhar
Anentropic
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.