Utilizando SysRq em Sistemas Debian pela rede por meio do sysrqd
Colaboração: José Messias Alves da Silva
Data de Publicação: 20 de julho de 2011
Creio que muitos usuários leigos já se indagaram sobre a funcionalidade da tecla (Print Screen | Sysrq)
em seus teclados. SysRq
significa System Request, que são funções mapeadas em atalhos de teclado pelo Kernel.
É possível usá-las pressionando a combinação de teclas Alt + SysRq + [tecla]
, que permite executar comandos comuns do SysRq
, tais como: sync, umount, reboot, poweroff, sak, term
, etc., onde [tecla]
pode ser s
(sync), k
(SAK), 0-9
(nível de log), b
(reboot), entre outras.
O sysrqd é um pequeno daemon que visa oferecer o controle do sistema com SysRq
pela rede.
A grande utilidade dessas funções são em situações em que o sistema está com carga de trabalho (processamento e memória) muito alta ou até mesmo inoperante. Já sysrqd é bastante útil quando não se está na frente do servidor e seja necessário realizar alguma intervenção.
Eis uma relação das funções que o SysRq
oferece:
- r - Tira o teclado e o mouse do controle do servidor X. Isso pode ser bem viável quando o servidor; X estiver travado, pode-se mudar para um terminal e matar o X (ou ainda, verificar os logs);
- k - Mata todos os processos que estão rodando no momento. Não é aconselhável fazer isso no terminal onde está rodando o X (tty7). A interface gráfica iria parar;
- b - Imediatamente reinicia o sistema, sem desmontar partições ou realizar sincronização;
- o - Desligamento via APM;
- s - Realiza a sincronização de todo o sistema de arquivos montado, ou seja, escreve todos os dados em memória virtual para a física;
- u - Remonta todo sistema de arquivos que foi montado para read-only;
- t - Mostra uma lista de tarefas atuais e suas informações para o console;
- m - Envia todas as informações atuais da memória para o terminal;
- p - Imprimi os conteúdos atuais dos registradores e flags para o console;
- 0-9 - Define o nível de log do console, controlando que mensagens do kernel serão impressas para no console;
- e - Envia um
SIGTERM
para todos os processos fazendo com que se preparem para o shutdown ou reboot, exceto oinit
; - i - Envia um
SIGTERM
para todos os processos (Quem não obdeceu aoAlt + SysRq + e
toma um kill -9), exceto oinit
; - l - Envia um sinal de
SIGKILL
para todos os processos, inclusive oinit
; - f - Executará a chamada de sistema
oom_kill
para matar o processo que está usando mais memória; - h - Usado para mostrar a ajuda. Entretanto, qualquer outra tecla não-listada acima irá exibir a ajuda.
Para habilitar as funções de SysRq
, é necessário ativá-la no kernel:
# echo "1" > /proc/sys/kernel/sysrq
Para persistir essa informação mesmo após um reinício da máquina, adiciona-se a seguinte linha ao /etc/sysctl.conf
:
kernel.sysrq = 1
Instalação do Sysrqd em Sistemas Debian
# apt-get install sysrqd
Uso do sysrqd
A conexão com o sysrqd
é protegido por senha, mas não cifrada. Configurando a senha:
# echo "senha_do_servico"> /etc/sysrqd.secret # chmod 0600 /etc/sysrqd.secret
Agora, para testar, basta dar um telnet
na porta 4094/tcp
.
$ telnet localhost 4094 Trying 127.0.0.1 ... Connected to localhost. Escape character is '^]'. sysrqd password: senha_do_servico sysrq> s sysrq> u sysrq> q
Referências
- [http://packages.debian.org/squeeze/sysrqd]
- [http://www.linuxhowtos.org/Tips%20and%20Tricks/sysrq.htm]
José Messias Alves da Silva é Matemático, Cientista da Computação pela UFPI, Especialista em Administração em Redes Linux, Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação do Tribunal Regional do Trabalho da 22ª Região. Entusiasta de soluções FOSS e ativista de cultura Hacker.