Como fechar ou (desvincular?) Uma porta deixada aberta por um aplicativo não autorizado?

19

Estou usando o Fedora 13 de 64 bits. Meu programa eclipse inicia um servidor na porta 9050, mas eu desligo o programa, o eclipse falha ao desligar o servidor corretamente. Reiniciar o eclipse não tem efeito.

Como posso fechar ou desvincular uma porta à força na linha de comando?

Eu sei que a reinicialização ou logoff e logon limparão as portas, mas esse processo muito mais lento para mim. Estou procurando forçar o fechamento da porta na linha de comando.

Marca
fonte

Respostas:

10

A única maneira de fechar uma porta de escuta forçosamente é matar o processo que está escutando nela. Use lsof, netstat, fuser- como root - para descobrir o ID do processo. Depois que o processo termina (por si só ou sendo morto), o kernel limpa automaticamente todos os soquetes que ele abriu. (No entanto, pode haver casos em que os programas serão impedidos de ouvir na mesma porta por alguns minutos; nesse caso, tudo o que você pode fazer é esperar.)

user1686
fonte
19
lsof -n -i

Encontre o processo que você está procurando e mate-o.

Do lsofmanual :

-n Esta opção inibe a conversão de números de rede em nomes de host para arquivos de rede. Inibir a conversão pode tornar lsof mais rápido. Também é útil quando a pesquisa de nome do host não está funcionando corretamente.

-i [i] Esta opção seleciona a lista de arquivos cujo endereço na Internet corresponde ao endereço especificado em i. Se nenhum endereço for especificado, essa opção seleciona a listagem de todos os arquivos de rede da Internet e x.25 (HP-UX).

A mesma resposta para esta pergunta, eu acho.

jonnyflash
fonte
7
Lance em | grep ":9050"(ou qualquer outro número de porta) para filtrar facilmente a saída
isaacparrot
9

Você pode usar o fusercomando com o -kswitch.

Por exemplo, para perto da porta 111, você pode fazer o seguinte: fuser -k 111/tcp (isso também poupa o trabalho de encontrar o ID do processo para matá-lo como fusor faz em implicitamente)

Observe que alguns processos são reiniciados automaticamente depois de fechados. Para isso, é necessário verificar o arquivo de configuração de cada processo para obter uma solução alternativa apropriada.

tony9099
fonte
-3

Eu tive o mesmo problema, basta olhar para o processo que está ouvindo essa porta usando o comando cmd no Windows

netstat -a -b

então você pode desligá-lo com o gerenciador de tarefas

daqop
fonte
2
Desculpe, eu votei mal. Você mencionou "no Windows". O parâmetro "-b" para netstat, que mostra nomes de executáveis, é específico para o Microsoft Windows. (As variações do netstat do Unix podem ter uma funcionalidade semelhante, mas normalmente não estão usando o mesmo parâmetro.) No entanto, a pergunta dizia "Fedora", então o autor desta pergunta estava procurando informações sobre o Fedora 13 64bit, um sistema operacional diferente. A página de manual do netstat para o Fedora indica que o uso -pmostra o PID (que pode ser usado para identificar o nome do executável).
TOOGAM
11
Existem vários erros nesta resposta. A resposta contém um erro gramatical que poderia ter sido evitado. A resposta também não se aplica ao Fedora, que é claramente mencionado, na primeira frase da pergunta. Não é como se a pergunta não contivesse essas informações quando a resposta foi enviada há 30 minutos, a questão não foi editada desde julho de 2011, o que ocorre há quase 5 anos. Portanto, estou aceitando esta resposta pelo que ela é, uma resposta "eu também", que raramente é realmente útil.
Ramhound