O comando kill envia um sinal especifico para um processo. O comando kill pode ser executado de várias maneiras, diretamente ou a partir de um script. Dentro do Linux, as tarefas são chamadas de processos, e cada um deles possui um número de identificação (PID) único. Para encerrar/finalizar (ou simplesmente matar) um processo utilizamos o comando kill.
Alguns exemplos em que o comando kill pode ser útil:
- Para interromper processos automatizados
- Para interromper um processo que foi iniciado por acidente
- Para interromper um processo que está utilizando muita memória
- Para forçar a parada de qualquer processo em execução no Linux
- Para interromper um processo sendo executado em segundo plano
Antes de seguir em frente e executar um comando kill, alguns pontos importantes a serem observados:
- Um usuário pode matar todo o seu processo.
- Um usuário não pode matar o processo de outro usuário.
- Um usuário root pode eliminar o processo no nível do sistema e o processo de qualquer usuário.
Além de interromper um processo, o comando kill ainda oferece outros recursos. Por exemplo, enviar um sinal. Por padrão, é utilizado o sinal TERM para encerrar o processo de forma amigável, já utilizando a opção SIGKILL encerra abruptamente o processo, assim podendo deixar “resíduos” no sistema/memória, podendo até tornar um processo zumbi.
A sintaxe comum para o comando kill é:
kill SIGNAL PID
Todos os sinais do comando kill
Existem múltiplos sinais disponíveis no Linux que podem ser utilizados para interromper, encerrar ou pausar processos. Para exibir a lista de todos os sinais disponíveis digite:
kill -l
Este comando irá mostrar uma página do manual com diferentes sinais do comando kill e seus respectivos números. Embora existam muitos sinais disponíveis, na maioria das vezes utilizamos o SIGKILL (9) e SIGTERM (15).
O comportamento do SIGTERM é a maneira padrão e mais segura de encerrar um processo. SIGHUP é uma forma menos segura de eliminar um processo como SIGTERM. O SIGKILL é a forma mais insegura entre as três anteriores, para encerrar um processo que termina um processo sem salvá-lo.
Para encerrar um processo, precisamos saber o ID do processo. Um processo é uma instância de um programa. Cada vez que um programa é iniciado, um PID exclusivo é gerado automaticamente para esse processo.
Cada processo no Linux, tem um PID. O primeiro processo que começa quando o sistema Linux é inicializado é o processo init, portanto, é atribuído um valor de PID 1.
Para exibir todos os processos e, correspondentemente, seus PID atribuídos, existem algumas formas:
- ps -A
- ps -ef
- ps -aux
Os comandos acima irão retornar todos os processos em execução, você pode filtrar a saída do comando utilizando o grep:
Na saída do comando acima o PID do processo mysqld é 511.
Podemos também verificar o PID do processo executando o comando abaixo caso já saiba o nome do processo:
Syntax: pidof NomeDoProcessoEx: pidof mysqld
Outra forma de realizar a mesma função é executar o comando pgrep:
Syntax: pgrep NomeDoProcesso
Ex: pgrep mysqld
Matar um processo através do PID - kill
Para eliminar o PID do processo mysql executado acima, use o comando kill da seguinte forma:
kill -9 511
Ué, mas por que o comando deu erro?
Lembrando que:
- Um usuário pode matar todo o seu processo.
- Um usuário não pode matar o processo de outro usuário.
Como fazer para saber quem iniciou o processo? Através do comando que foi apresentado logo acima:
ps -aux | grep mysqld
Ele conseguimos ver que o usuário mysqld que iniciou. Somente o próprio usuário pode matar o processo ou o root.
Nesse caso podemos acessar o login do root digitando:
sudo suousu -
Repare que ao invés de $ alterou para #, isso significa que está como root e não mais usuário normal:
Outra forma de executar a mesma função é:
O comando kill -9 PID é equivalente a kill -SIGKILL PID, pode ser utilizado qualquer uma das formas.
É possível executar comandos com permissão de root digitando sudo COMANDO ao invés de trocar de conta.
Syntax: sudo kill -9 PIDMatar um processo através do nome do processo - pkill
Você deve estar ciente do nome do processo antes de encerrar:
Syntax: pkill NomeDoProcesso
Exemplo: pkill mysqld
É possível matar vários processos de uma só vez execute:
Syntax: kill PID1 PID2 PID3
kill -9 PID1 PID2 PID3
kill -SIGKILL PID1 PID2 PID3
Matar família de processos através do nome do processo - killall
E se um processo tiver muitas instâncias e vários processos (PID) filho, existe o comando killall. Este comando leva o nome do processo como argumento no lugar do número do processo.
Syntax: killall SIGNAL NomeDoProcessoExemplo: killall -9 mysqld
Você sempre pode verificar o status do processo se ele está em execução ou não, usando qualquer um dos comandos abaixo.
- systemctl status mysql
- service mysql status
- pgrep mysql
- ps -aux | grep mysql
Por enquanto isso é tudo. Em breve estarei aqui novamente com outro tópico.
$ sudo poweroff









