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