Sinais no Linux [Guia Básico]

A “conversa” entre o sistema operacional e os programas em execução é através de Sinais no Linux, que são interrupções de software, utilizadas para colocar um programa conectado a um terminal, em espera, em segundo ou em primeiro plano, e até mesmo parar sua execução. 

Cada processo no Linux fica à escuta de sinais. Estes sinais são utilizados pelo Kernel, por outros processos ou por usuário para avisar a um determinado processo sobre algum evento em particular. O guru de UNIX W. Richard Stevens descreve os sinais como interrupções de software.

Quando um sinal é enviado para um processo ele toma uma determinada ação dependendo do valor que este sinal carrega. 

Cada sinal tem um nome exclusivo e um valor numérico. 

Vejamos alguns valores e suas ações:

TABELA  – Sinais mais importantes 

SinalValor NuméricoAção
SIGHUP1Hang-Up ou desligamento. Este sinal é utilizado automaticamente quando você desconecta de uma sessão ou fecha um terminal. Ele também é utilizado por processos servidores para invocar a releitura do arquivo de configuração.
SIGINT2É o sinal de interromper o funcionamento. Ele é acionado por exemplo quando se aperta as teclas Ctrl C.
SIGKILL9Terminar o processo incondicionalmente de forma rápida e drástica. Este tipo de sinal pode deixar arquivos abertos e bases de dados corrompidas. Deve ser utilizado caso o processo pare de responder ou em uma emergência.
SIGTERM15Termina o processo de forma elegante, possibilitando que ele feche arquivos e execute suas rotinas de fim de execução.
SIGCONT18É um sinal para um processo que foi parado com o sinal SIGSTOP para que ele continue a executar.
SIGSTOP19É um sinal que pode ser enviado para um processo parar de funcionar momentaneamente. Ele continua existindo, mas não recebe mais CPU para executar, até que receba o sinal SIGCONT.
SIGTSTP20Termina a execução para continuar depois. Este sinal é enviado automaticamente quando utilizamos as teclas ctrl-z. É utilizado para colocar o processo em segundo plano.

O Linux possui mais de 30 sinais definidos. A maioria é utilizada pelo Kernel e alguns pelos usuários em situações específicas.

O entendimento de sinais é importante para sabermos como o sistema interage com os processos em execução. Os comandos kill e killall podem ser usados para enviar sinais específicos para um processo em execução.

A maioria dos administradores ao parar um processo, usa o SIGKILL. No entanto, este sinal é muito “forte”, pois faz uma parada abrupta no processo em execução, e pode deixar arquivos abertos, indexes malfeitos, e dados corrompidos. É melhor usar o sinal SIGTERM, que permite que o programa termine elegantemente, fechando os arquivos, indexes e bases de dados.

O Linux permite que os usuários enviem sinais para os programas em execução através do comando kill.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe