Linux - Encerrando Processos
Encerrar processos é uma das tarefas mais comuns ao trabalhar com processos no Linux. O sistema oferece várias comandos para essa finalidade: kill
, pkill
e killall
. Ao utilizar esses comandos, é possível enviar um sinal específico ao processo, que age como uma instrução para ele. Existem 32 sinais disponíveis, mas apenas quatro são comuns:
Sinal | Valor | Descrição |
---|---|---|
SIGHUP | 1 | Usado quando há alteração no arquivo de configuração. Permite que o processo aplique novas configurações |
SIGKILL | 9 | Encerra forçosamente o processo. Deve ser usado apenas como último recurso, pois pode resultar na perda de dados não salvos |
SIGTERM | 15 | Solicita o encerramento do processo. Este sinal pode ser ignorado pelo processo |
SIGUSR1 | 30 | Envia um sinal definido pelo usuário |
Comando kill
O comando kill
é o método mais comum para enviar sinais a processos. É fácil de usar e aceita dois argumentos: o nome ou número do sinal e o PID do processo a ser encerrado:
kill [-s sigspec | -n signum] pid
A opção -s
especifica o nome do sinal, enquanto -n
indica o número do sinal. Se nenhum sinal for especificado, kill
envia o sinal 15 por padrão, solicitando o encerramento do processo.
Para encerrar um processo, primeiro precisamos identificar seu PID. Por exemplo, se quisermos encerrar o navegador Chrome, primeiro obteríamos seu PID com:
programicio@Programicio:~$ pgrep -l chrome
Suponha que o PID do Chrome seja 10848. Para encerrar este processo, usamos:
programicio@Programicio:~$ kill 10848
Também é possível encerrar vários processos simultaneamente, especificando seus PIDs separados por espaços:
kill 10848 3822
Comando killall
O comando killall
permite especificar os processos a serem encerrados com mais precisão. Entre suas opções, destacam-se:
-I
: ignora maiúsculas e minúsculas no nome do processo-r
: permite especificar uma expressão regular que os processos devem corresponder-u
: especifica o usuário cujos processos serão encerrados
Por exemplo, para encerrar todas as instâncias do navegador Google Chrome:
killall -r chrome
Aqui, "chrome" é tratado como uma expressão regular. Para encerrar processos cujos nomes contêm "chrome_":
programicio@Programicio:~$ pgrep -l chrome programicio@Programicio:~$ killall -r chrome_
Comando pkill
O comando pkill
encerra processos baseando-se em seus nomes ou atributos. Aqui estão algumas das opções que ele aceita:
-i, --ignore-case
: ignora maiúsculas e minúsculas ao corresponder ao padrão-n, --newest
: seleciona os processos mais recentes-o, --oldest
: seleciona os processos mais antigos-O, --older <seconds>
: seleciona processos em execução há pelo menos um número especificado de segundos-P, --parent <PPID,...>
: seleciona apenas os processos filhos de um processo pai especificado-u, --euid <ID,...>
: seleciona processos de um usuário especificado-x, --exact
: requer correspondência exata do nome do comando
Por exemplo, para encerrar todos os processos do navegador Chrome:
pkill chrome