Todos nós já tivemos aqueles dias em que nosso computador funciona excepcionalmente lento e gagueja ao executar até mesmo as tarefas básicas. No Windows, você só tem o Gerenciador de Tarefas do Windows para inspecionar e matar processos que não são tão importantes, mas consomem enormes quantidades de memória. No entanto, no Linux, você tem todo um arsenal de comandos e ferramentas GUI para gerenciar essas tarefas. Neste artigo, mostraremos alguns métodos fáceis de linha de comando (CLI), bem como métodos GUI para eliminar um processo no Linux.
Encerrar processo no Linux (2023)
Mas antes de mergulharmos no mundo do gerenciamento de processos no Linux, vamos entender o que exatamente é um processo e o que é um ID de processo em sistemas Linux. Índice
O que são processos no Linux
No Linux, cada instância de um programa atualmente em execução é conhecida como um “processo”, enquanto cada arquivo executável é conhecido como um programa. Quando qualquer programa é executado, um processo é criado e cada processo recebe um número de identificação exclusivo de 5 dígitos conhecido como “ID do processo”. Quando um processo termina a execução ou é encerrado à força, seu ID de processo é atribuído ao próximo processo da linha.
Matar processo via linha de comando no Linux
Embora o uso do terminal às vezes pareça intimidador em comparação com o uso de ferramentas GUI para tarefas básicas, o gerenciamento de vários processos se torna muito mais fácil quando você entende os comandos e suas várias opções.
Sinais de terminação
Quando você tenta matar um processo da GUI ou da CLI no Linux, o kernel envia um sinal de encerramento para o processo. O processo age de acordo, dependendo do sinal recebido. A cada um desses sinais é atribuído um número específico para o programa entender rapidamente. Existem inúmeros tipos de sinais de terminação, mas explicamos apenas os essenciais aqui:
Sinal | Valor numérico | Descrição |
---|---|---|
INSCREVA-SE | 1 | Significa ‘Signal Hangup’ É enviado quando o terminal é fechado. |
ASSINAR | 2 | Significa ‘interrupção de sinal’ É enviado quando o usuário finaliza o processo. |
SIGKILL | 9 | Significa ‘Signal Kill’ É enviado quando você precisa encerrar um processo imediatamente |
SIGTERM | 15 | Significa ‘Rescisão do Sinal’ É enviado quando você precisa encerrar um processo e liberar os recursos consumidos |
SIGSTOP | 19 – para ARM, x86 17 – para ALFA 23 – para MIPS 24 – para PA-RISC |
Significa ‘Sinal Stop’ É enviado quando você precisa pausar um processo e retomá-lo mais tarde |
Os sinais mais usados são o SIGKILL (9) e o SIGTERM (15).
Identifique os IDs do processo
Antes de encerrar um processo, você precisa saber alguns detalhes do processo, como ID do processo, tempo de execução etc. Para saber os detalhes de um processo, use o comando ps
:
ps
Com o comando ps, você precisa procurar o processo rolando e anotando seu nome, o que pode ser complicado. Em vez disso, você pode até usar o comando grep
com o comando ps
em um pipeline, conforme mostrado abaixo:
ps | grep
Para tornar as coisas mais simples, existe um comando separado que mostra apenas o ID do processo de qualquer processo em execução que você precisa saber. A sintaxe para usar o comando pidof
é:
pidof
Encerre o processo usando o comando kill
Depois de anotar o ID do processo que deseja encerrar, o comando mais comum usado para encerrar programas em seu sistema Linux é o comando kill. A sintaxe para usar o comando kill é:
kill
O parâmetro
é opcional e o comando kill envia o sinal SIGTERM (15) por padrão. Você pode enviar qualquer outro sinal por seu valor numérico ou pelo nome do sinal real da tabela acima.
Encerre o processo usando o comando pkill
Se você achar que a busca pelo id do processo é inconveniente, você pode usar o comando pkill. Ele procura os processos que correspondem a um padrão e o mata. A sintaxe para usar o comando pkill é:
pkill
Algumas das opções comuns para emparelhar com o comando pkill são:
Opção | Descrição |
---|---|
-n |
Seleciona apenas os processos mais recentes que correspondem ao ID do processo |
-u |
Seleciona os processos pertencentes a um usuário específico |
-x |
Seleciona processos que correspondem exatamente ao padrão |
Isso é particularmente importante quando vários usuários estão trabalhando em diferentes instâncias do mesmo programa no mesmo sistema e uma das instâncias começa a apresentar algum comportamento inesperado. Por exemplo, na captura de tela abaixo, estamos eliminando a instância “gedit” pertencente ao usuário ‘intel’ usando o comando pkill no Linux:
pkill -u intel gedit
Encerre o processo usando o comando killall
O comando killall
funciona de forma semelhante ao comando kill
, mas mata todos os processos correspondentes ao nome do processo, independentemente do usuário. Por padrão, ele envia o sinal SIGTERM se não for especificado de outra forma. Uma coisa interessante a se notar é que o comando killall
nunca pode matar a si mesmo, mas pode encerrar outras instâncias do comando killall
. A sintaxe para usar o comando killall
é:
killall
Algumas das opções para emparelhar com o comando killall são:
Opção | Descrição |
---|---|
-r |
Interpreta o process_name como um padrão regex e, em seguida, mata os processos correspondentes ao padrão |
-u |
mata o processo especificado pertencente a um proprietário especificado. |
-o |
Mata os processos especificados mais antigos (iniciados antes) do que um horário específico. |
-y |
Mata os processos especificados mais jovens (iniciados após) o tempo específico. |
O comando killall pode ser útil para encerrar uma série do mesmo processo ou até mesmo todos os processos pertencentes a um proprietário específico. Aqui em nosso exemplo, estamos matando todos os processos de “dormir por 500 segundos” usando o comando killall no Linux:
killall -v sleep
Encerre o processo do Linux usando o comando top/htop
Esse método de matar processos é útil quando você não tem ideia de quais processos estão consumindo o máximo de recursos. Em ambos os comandos, você pode navegar por todos os processos em execução ou mesmo por processos zumbis e finalizá-los rapidamente. Para usar o comando top para monitorar seus recursos, use a sintaxe no Terminal:
top
Entendendo a saída:
A saída principal do comando top é dividida em colunas que são:
- PID – mostra o ID do processo em execução
- User – mostra o dono do processo
- PR – mostra o valor de prioridade do processo atribuído pelo sistema operacional
- NI – mostra os bons valores que são como atribuir valores espaçados pelo usuário para controlar manualmente a prioridade de uma tarefa.
- VIRT – mostra a quantidade de memória virtual usada pelo processo.
- RES – mostra a quantidade de memória física usada pelo processo
- SHR – mostra a quantidade de memória compartilhada por outros processos
- S – mostra o estado atual do processo que pode ser:
- D – sono ininterrupto
- R – correndo
- S- dormindo
- T- parado
- Z- zumbi
- %CPU – Mostra a quantidade de CPU utilizada pelo processo em porcentagem
- %MEM – Mostra a quantidade de RAM utilizada pelo processo em porcentagem
- TIME+ – Mostra o tempo total de execução do processo
- Comando – Mostra qual comando foi invocado para o processo.
Se você não souber o ID do processo da tarefa que deseja eliminar, navegue pela lista usando as teclas de seta ou procure o nome do processo na tabela de processos no Linux.
Para pesquisar o nome do processo, pressione ‘L’ no teclado e digite o nome do processo que deseja pesquisar. Depois de encontrar o processo nefasto, pressione ‘k’ no teclado para matar o processo. Agora, insira o ID do processo ou deixe-o no processo atualmente destacado e pressione ‘ENTER’. Em seguida, insira o sinal de término e pressione ‘ENTER’ para encerrar o programa. Para retornar ao terminal, pressione ‘q’ no teclado.
Comandos htop do Linux 1 Comentário