Categories: Tecnologia

Como encerrar um processo Linux por número de porta

Para encerrar um processo Linux você precisa de seu ID ou nome. Se tudo que você sabe é a porta que está usando, você ainda pode matá-la? Sim, de várias maneiras diferentes.

Matando Processos

Ocasionalmente, um processo do Linux pode parar de responder. Ele pode parar de funcionar corretamente ou continuar funcionando, mas ignorar as solicitações de desligamento ou começar a consumir memória, CPU ou largura de banda da rede.

Quaisquer que sejam seus motivos, existem maneiras de encerrar um processo na linha de comando do Linux. O método clássico é usar o  comando kill com o ID  do processo que você deseja encerrar. O kill comando tem alguns parentes próximos. O

 pkill 

comando irá matar um processo pelo nome, e

 killall 

matará todos os processos que encontrar que compartilham parte de um nome.

Se tudo o que você sabe sobre um processo é que ele está usando uma porta do seu computador, ainda existem maneiras de identificá-lo e eliminá-lo. Em termos de rede, “porta” pode significar uma conexão física na qual você insere um cabo com um plugue na extremidade, como um  cabo de rede CAT5 ou 6 , ou pode significar uma porta de software.

Uma porta de software é a parte final de uma conexão de rede. O endereço IP de um dispositivo identifica o computador ou outro dispositivo de rede. Os aplicativos dentro do computador usam portas diferentes. Eles fornecem outro nível de granularidade. O tráfego de rede chegou ao computador correto usando o endereço IP e, usando o endereçamento de porta, pode ser entregue ao aplicativo correto.

É como se a correspondência postal chegasse a um hotel e fosse classificada e entregue nos quartos apropriados. O endereço IP é como o endereço do hotel e os números dos quartos são como os números das portas.

Se você vir atividade de rede em uma porta e não reconhecer o processo que a está gerando, ou se seu comportamento for problemático ou suspeito, você pode querer encerrar o processo. Mesmo que tudo o que você saiba seja o número da porta, você pode rastrear o processo e eliminá-lo.

Criando conexões com socat

Para que tenhamos algumas conexões para eliminar, usaremos socatpara criar conexões de rede usando diferentes protocolos. Você precisará instalar o socat. Para instalá-lo no Ubuntu, use este comando:

sudo apt instalar socat

No uso do Fedora dnf:

sudo dnf instalar socat

No Manjaro você precisa digitar:

sudo pacman -S socat

A sintaxe para socaté direta, embora um pouco prolixa. Precisamos fornecer os endereços de origem e destino. Para cada um deles, precisamos fornecer o protocolo, endereço IP e número da porta. Podemos substituir STDIN ou STDOUT como origem ou destino.

Este comando cria uma conexão entre um soquete de escuta TCP na porta 7889, no endereço IP de loopback 127.0.0.1 e STDOUT. O e comercial ” &”  executa o comando em segundo plano , para que possamos manter o acesso à linha de comando.

socat tcp-listen:7889,bind=127.0.0.1 stdout &

Criaremos mais duas conexões para que tenhamos uma pequena seleção de soquetes usando protocolos diferentes. Criaremos uma  conexão UDP  e uma  conexão SCTP . A única parte do comando que muda é o protocolo.

socat udp-listen:7889,bind=127.0.0.1 stdout &

socat sctp-listen:9999,bind=127.0.0.1 stdout &

Usando Matar

Claro, podemos usar killpara encerrar o processo, desde que saibamos qual é o ID do processo. Para encontrar o PID, podemos usar o  lsofcomando .

Para listar os detalhes do processo na porta 7889 que utiliza o protocolo TCP, utilizamos a -iopção (endereço de internet), assim.

lsof -i tcp:7889

O PID deste processo é 3141, e podemos prosseguir e usá-lo com kill:

sudo matar 3141

Podemos poupar algum esforço se usarmos canos. Se canalizarmos a saída de lsofinto awke pedirmosawk para procurar linhas que contenham a porta na qual estamos interessados ​​— 7889 — e imprimir o segundo campo dessa linha, isolaremos o PID.

lsof -i tcp:7889 | awk '/7889/{imprimir $2}'

Podemos então canalizar a saída awkpara o killcomando usando xargs. O xargscomando pega sua entrada canalizada e a passa para outro comando  como parâmetros de linha de comando . Usaremos xargscom o killcomando.

lsof -i tcp:7889 | awk '/7889/{imprimir $2}' | xargs matar

Não recebemos nenhum feedback visual. Da maneira típica do Linux, nenhuma notícia é uma boa notícia. Se quiser verificar se o processo foi encerrado, você pode usar lsofmais uma vez.

lsof -i tcp:7889

Porque lsofnão informa nada, sabemos que não existe essa ligação.

Podemos remover um processo usando o protocolo UDP simplesmente substituindo “tcp” por “udp” em nosso comando anterior.

lsof -iudp:7889 | awk '/7889/{imprimir $2}' | xargs matar

No entanto, lsofnão reconhece o protocolo SCTP.

lsof -i sctp:7889

Podemos usar o sscomando para fazer isso. Estamos usando a -Sopção (SCTP) para procurar soquetes SCTP, a -aopção (todos) para procurar todos os tipos de soquetes (escutando, aceitando, conectados, etc.) e a -popção (processos) para listar os detalhes do processo usando o soquete.

ss-Sap

Podemos analisar essa saída usando grepe awk. Também poderíamos analisá-lo usando grepalgumas expressões regulares PERL, mas desta forma é muito mais fácil de entender. Se você fosse usar isso mais de uma ou duas vezes, provavelmente criaria um alias ou uma função de shell com ele.

Canalizaremos a saída de ssinto  grepe procuraremos nosso número de porta, 7889. Canalizaremos a saída de grepinto awk. Em awk, estamos usando a -Fopção (separator string) para definir uma vírgula ” ,” como delimitador de campo. Procuramos uma string contendo “pid=” e imprimimos o segundo campo delimitado por vírgula dessa string.

ss -Sap | grep "7889" | awk -F',' '/pid=/{imprimir $2}'

Isso nos deu a string “pid=2859”.

Podemos canalizar isso awknovamente, definir o delimitador de campo para o sinal de igual ” =” e imprimir o segundo campo dessa string, que será o texto atrás do sinal de igual.

ss -Sap | grep "7889" | awk -F',' '/pid=/{imprimir $2}' | awk -F'=' '{imprimir $2}'

Agora isolamos o ID do processo. Podemos usar  xargs para passar o PID killcomo um parâmetro de linha de comando.

ss -Sap | grep "7889" | awk -F',' '/pid=/{imprimir $2}' | awk -F'=' '{imprimir $2}' | xargs matar

Isso elimina o processo que estava usando o soquete do protocolo SCTP na porta 7889.

O comando do fusor

O fusercomando simplifica muito as coisas. A desvantagem é que ele só funciona com soquetes TCP e UDP . Do lado positivo, esses são os dois tipos mais comuns de soquetes com os quais você precisará lidar. O fusercomando já estava instalado nos computadores Ubuntu, Fedora e Manjaro que verificamos.

Tudo que você precisa fazer é usar a -kopção (kill) e fornecer a porta e o protocolo. Você pode usar a -nopção (namespace) e fornecer o protocolo e a porta ou usar o “formato de atalho de barra” e colocar o número da porta primeiro.

fusor -n tcp 7889

fusor 7889/udp

O número da porta, protocolo e PID do processo encerrado são impressos na janela do terminal.

Experimente o fusor primeiro

Provavelmente será instalado no computador em que você está trabalhando e o protocolo provavelmente será TCP ou UDP, portanto, há uma grande chance de que a maneira mais simples funcione para você.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

1 ano ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

1 ano ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

1 ano ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

1 ano ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

1 ano ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

1 ano ago