Como matar processos do terminal Linux

Como matar processos do terminal Linux

Principais conclusões

  • Eliminar um processo significa simplesmente forçá-lo a encerrar, e isso pode ser necessário quando um processo não responde ou se comporta mal.
  • Linux e macOS têm comandos como kill, pkill e killall que permitem encerrar processos por PID ou nome.
  • É importante ser cauteloso ao encerrar processos e garantir que você está encerrando o processo correto para evitar quaisquer consequências indesejadas.

Matar um processo às vezes é a única maneira de se livrar dele. Apesar do nome áspero, “matar” um processo significa apenas “forçá-lo a encerrar”. Veja como fazer isso na linha de comando do Linux ou macOS.

O que é um processo?

A execução de programas como o navegador da web, processos em segundo plano associados ao ambiente de área de trabalho e serviços do sistema Linux são todos processos.

Você pode agrupar processos em dois grupos:

  • Processos de primeiro plano são aqueles que foram iniciados ou iniciados por um usuário. Eles podem estar em uma janela de terminal ou em um aplicativo gráfico.
  • Processos em segundo plano são todos os processos iniciados automaticamente e que não têm nenhuma interação com os usuários. Eles não esperam informações dos usuários nem lhes apresentam resultados ou resultados. Processos em segundo plano são coisas como serviços e daemons.

Se os processos de primeiro plano são a equipe de teatro e os atores, os processos de segundo plano são a equipe de bastidores “nos bastidores”.

Quando os processos se comportam mal ou funcionam mal, eles podem consumir muito tempo da CPU, consumir sua RAM ou entrar em um loop computacional apertado e parar de responder. Os aplicativos gráficos podem se recusar a responder aos cliques do mouse. Os aplicativos de terminal talvez nunca retornem você ao prompt de comando.

O que matar um processo faz?

“Matar” um processo significa apenas “forçar o encerramento do processo”. Isso pode ser necessário se o processo se recusar a responder.

O Linux fornece os comandos kill, pkille killallpara permitir que você faça exatamente isso. Esses comandos podem ser usados ​​com qualquer tipo de processo, gráfico ou linha de comando, em primeiro ou segundo plano.

O comando de matar

Para usar kill, você deve saber o ID do processo (PID) do processo que deseja encerrar. O pscomando pode ser usado para encontrar o PID de um processo.

Para pspesquisar todos os processos use a -eopção (todos os processos). É aconselhável canalizar a saída less, pois haverá bastante disso. Digite ps, um espaço, -e, um espaço, |(uma barra vertical), outro espaço e digite less. Pressione Enter para executar o comando.

ps -e | less

Comando ps em uma janela de terminal

Isso lhe dará uma lista de processos semelhante à captura de tela abaixo. Você pode pesquisar para frente lessusando a /tecla e para trás usando a ?tecla.

saída de ps em uma janela menor

Para se concentrar no processo no qual você está interessado, canalize a saída pse grepespecifique o nome — ou parte do nome — do processo.

ps -e | grep shutter

Comando ps canalizado através do grep para encontrar o processo do obturador

Depois de localizar o PID do processo que deseja encerrar, passe-o ao killcomando como parâmetro. Para encerrar o shutterprocesso identificado pelo comando anterior, use este comando:

kill 2099

comando kill em uma janela de terminal

O killcomando é um assassino silencioso – ele não fornece nenhum feedback se foi bem-sucedido.

Também funciona da mesma forma para eliminar processos no macOS .

O comando pkill

O pkillcomando permite eliminar um processo – ou processos – pelo nome. Você não precisa identificar o processo por PID. Para usar, pkillvocê fornece um termo de pesquisa pkillusado para verificar a lista de processos em execução. Os processos de correspondência são encerrados. Portanto, você precisa ter certeza de que o termo de pesquisa foi escrito corretamente.

Como rede de segurança, você pode usar o pgrepcomando antes de usar o pkillcomando. O pgrepcomando também aceita um termo de pesquisa. Ele listará o PID de cada processo que corresponde ao termo de pesquisa. Isso é seguro porque pgrepnão emitirá nenhum sinal de interrupção para os processos e, se você digitar incorretamente o termo de pesquisa, não eliminará outro processo por engano. Você pode ter certeza de que o termo de pesquisa foi pensado corretamente antes de passá-lo para pkill. Ambos pkille pgreptratam o termo de pesquisa da mesma maneira. O tratamento deles é tão semelhante que eles compartilham a mesma página de manual .

Suponhamos que exista um processo com “subq” no nome. Usaremos o ps -u dave | grepcomando para dar uma espiada por trás da cortina. Você pode ver que “subq” corresponderá a esse processo e somente a esse processo. Isso foi só para você ver o nome completo do processo.

ps -u dave | grep subq

Comando ps em uma janela de terminal

Vamos supor que nosso usuário não tenha feito isso; tudo o que sabem é que o nome do processo contém a substring “subq”. Eles usam pgreppara verificar se há apenas uma correspondência para o termo de pesquisa. Eles então usam esse termo de pesquisa com pkill.

pgrep subq pkill subq

pgrep e pkill em uma janela de terminal

Você pode usar pkillpara encerrar vários processos de uma vez. Aqui o usuário corre pgreppara verificar quantos processos o Chrome lançou. Eles costumavam pkillmatar todos eles. Eles então verificam pgrepse todos foram removidos.

pgrep chrome pkill chrome pgrep chrome

pgrep e pkill em uma janela de terminal

Se vários processos com o mesmo nome estiverem em execução, mas você não quiser eliminar todos eles, poderá usar pgrepa -fopção (linha de comando) para identificar qual processo é qual. Um exemplo simples seriam dois pingprocessos. Você quer matar um deles, mas não o outro. Você pode usar suas linhas de comando para distingui-los. Observe o uso de aspas para quebrar o parâmetro da linha de comando.

pgrep -f "ping 192.168.4.22" pkill -f "ping 192.168.4.22"

pgrep pkill com linha de comando ping

O comando killall

Atenção : Nos sistemas operacionais Solaris e OpenIndiana o killallcomando irá matar todos os processos que pertencem a você. Se for root ou se tiver emitido sudo killallvocê irá reiniciar o seu computador! Durante a pesquisa para este artigo, esse comportamento foi confirmado com a versão mais recente do OpenIndiana Hipster 2018.10.

O killallcomando opera de maneira semelhante ao pkillcomando, mas com uma diferença específica. Em vez de passar um termo de pesquisa para o comando, você deve fornecer o nome exato do processo.

Você não pode fornecer uma correspondência parcial para um nome de processo; você deve fornecer o nome completo do processo, conforme mostrado:

killall shutt killall shutter

comando killall em uma janela de terminal

A -yopção (mais jovem que) permite eliminar processos que estão em execução há menos de um período especificado. O período é dado em números seguidos por uma destas unidades:

  • s (segundos)
  • m (minutos)
  • h (horas)
  • d (dias)
  • w (semanas)
  • M (meses, nota, “M maiúsculo”)
  • e (anos)

Para encerrar um processo chamado anaque acabou de ser iniciado e deixar quaisquer instâncias mais antigas em anaexecução, você poderia usar os seguintes parâmetros com killall, se tivesse reagido em dois minutos:

killall -y 2m ana

killall com opção mais jovem que

A -oopção (mais antigo que) permite eliminar processos que estão em execução há mais tempo do que um período especificado. Este comando eliminará todas as sshconexões que estão em execução há mais de um dia:

killall -o 1d sshd

comando killall em uma janela de terminal

Você pode matar qualquer processo?

Esses comandos permitirão identificar e encerrar processos errôneos com precisão e segurança corretamente. No entanto, você pode ficar muito feliz e é perfeitamente possível encerrar um processo que não deveria.

Sempre seja cauteloso. Primeiro, certifique-se de que o processo que você está prestes a eliminar é realmente o que você deseja. Em segundo lugar, verifique novamente – tenha cuidado e certifique-se de que o processo alvo é aquele que você deseja encerrar. Prossiga encerrando o processo quando estiver satisfeito.

Se você encerrar um processo acidentalmente, não será o fim do mundo. O resultado mais provável é que algo dê errado e você precise reiniciar o PC ou poderá perder o trabalho realizado no programa associado ao processo encerrado.

Comandos Linux

arquivos

tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · menos · chgrp · chown · rev · look · strings · tipo · renomear · zip · descompactar · montar · desmontar · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converter · rclone · fragmentar · srm · scp · gzip · chattr · cortar · encontrar · umask · wc · tr

Processos

alias · tela · topo · legal · renice · progresso · strace · systemd · tmux · chsh · histórico · em · lote · grátis · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · mindinho · lsof · vmstat · tempo limite · parede · sim · matar · dormir · sudo · su · tempo · groupadd · usermod · grupos · lshw · desligar · reiniciar · parar · desligar · senha · lscpu · crontab · data · bg · fg · pidof · nohup · pmap

Rede

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · cavar · dedo · nmap · ftp · curl · wget · quem · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *