Categories
Tutoriais Ubuntu

Como matar programas no Linux

Da série de comandos tradicionais do universo Linux e Unix, o comando kill permite interromper processos arbitrariamente.
Uma definição simplificada de processo é de que se trata de um programa ou uma tarefa em execução
É um sistema UNIX! Eu conheço isto! Kill
Ao iniciar, cada processo recebe uma identificação numérica única, atribuída pelo sistema — chama-se PID, Process IDentification.
Para “matar” um programa em execução, você precisa saber o PID dele (no final do artigo, vou mostrar como matar um processo sem saber seu PID).

POSTS RELACIONADOS

A sintaxe do comando kill

Apesar do nome, o comando kill serve para muito mais do que apenas matar processos.
Sua função é enviar sinais para processos e alguns destes não tem absolutamente qualquer coisa a ver com “morte”.
Sua execução segue, portanto, a seguinte forma:


kill -s SINAL PID

Nos exemplos, abaixo, vou mostrar outras formas de usar o comando.

Como encontrar o PID de um processo específico

O comando ps aux pode mostrar uma lista bem extensa de processos em execução, o que pode dificultar a busca.
É aqui que entra o comando grep, um velho conhecido da gente.
Para exemplificar, vou rodar o ftp em background (&) e determinar o seu PID com o grep em conjunto com o ps:


ftp &

[1] 2983

ps aux | grep ftp

proftpd   1242  0.0  0.1  11996  2172 ?        Ss   10:01   0:00 proftpd: (accepting connections)              
1000      2983  0.0  0.0   5212  1012 pts/5    T    11:51   0:00 ftp
1000      2985  0.0  0.0   4724   836 pts/5    S+   11:51   0:00 grep --color=auto ftp
[1]+  Parado                  ftp

Neste exemplo, o programa ftp tem o PID 2983. No seu sistema o PID será diferente. Verifique.

O comando kill, em exemplos

Uma vez que você já sabe como determinar o PID dos processos, já pode entender como usar esta informação em conjunto com o kill.
Há dois sinais básicos para indicar que se deseja interromper a execução de um processo:

  • SIGTERM(15) — que requisita educadamente a interrupção de um processo. Cabe a este aceitar ou ignorar o sinal. Se aceitar, ele finaliza sua própria execução, graciosamente e gravando o que precisa ser gravado. Há um sinal semelhante a ele, chamado SIGINT. Cada sinal atende por um número. O do SIGTERM é 15.
  • SIGKILL(9) — envia uma requisição ao processo para que este seja terminado imediatamente. Ele não pode ser ignorado e é sequer analisado pelo processo, que é interrompido incontinenti. O número deste sinal é 9.

Vamos ver como aplicá-los:
Podemos enviar um SIGTERM ao processo 2983, de 4 formas diferentes:


kill 2983
kill -s TERM 2983
kill -TERM 2983

ou indicando o número do sinal:


kill -15 2983

Para enviar um SIGKILL, use uma destas 3 opções:


kill -9 2983
kill -s KILL 2983
kill -KILL 2983

Espero ter deixado claro, como terminar um processo via terminal, no Linux. O ambiente gráfico tem um comando similar, chamado xkill, do qual falaremos em outro artigo.

POSTS RELACIONADOS

Como finalizar um programa sem conhecer o seu PID

Há casos em que um processo abre vários outros processos – em que um programa abre várias outras instâncias de si mesmo. Quando o usuário dá um ps no sistema, vê uma quantidade muito grande de PIDs para fechar.
Veja a figura, abaixo, onde se pode ver uma certa quantidade de processos do chromium-browser abertos.
comando ps aux linux
É possível fechá-los todos com o killall. Veja como:


killall chromium-browser

Você pode repassar o número de um sinal para o comando, assim:


killall -9 chromium-browser

Fácil, não é?

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.