¿Qué es la utilidad SysRq?
En caso de que su kernel se congele o cuelgue, puede usar la herramienta "mágica" SysRq. La tecla 'mágica' SysRq permite el acceso instantáneo a varios comandos esenciales del kernel, incluidos Sync, Unmount, kill processs, showMem, showPc y reBoot. Según la documentación del kernel de Linux:
Es una combinación de teclas "mágicas" que puede presionar y el kernel responderá independientemente de lo que esté haciendo, incluso si la consola no responde.Cómo habilitar SysRq
La tecla SysRq se puede activar configurando el 'Magic SysRq'. Tienes que asegurarte de que el kernel.sysrq en sysctl.conf está configurado correctamente:
kernel.sysrq = 1 (SysRq turned ON) kernel.sysrq = 0 (SysRq turned OFF)Nota :En CentOS/RHEL 7, debe realizar los cambios en "/usr/lib/sysctl.d/50-default.conf"
La configuración anterior garantiza que SysRq esté habilitado de forma predeterminada después del arranque del sistema (de forma predeterminada, está deshabilitado en CentOS/RHEL). Para habilitarlo, ejecútelo de inmediato en la sesión actual, use el siguiente comando:
# echo 1 > /proc/sys/kernel/sysrq
Y para desactivarlo de nuevo:
# echo 0 > /proc/sys/kernel/sysrqNOTA :Dado que habilitar SysRq le brinda a alguien con acceso físico a la consola capacidades adicionales, se recomienda deshabilitarlo cuando no esté solucionando un problema o para asegurarse de que el acceso físico a la consola esté debidamente protegido.
Cómo desencadenar un evento SysRq
Hay varias formas de activar un evento SysRq. En la mayoría de las arquitecturas, los eventos SysRq se pueden activar desde la consola con la siguiente combinación de teclas:
Alt+PrintScreen+[CommandKey]
PrintScreen es la clave utilizada como clave SysRq en la mayoría de los sistemas Linux.
Para acceder a un sistema que no responde, presione Alt+SysRq y H para obtener una lista de opciones. Las diferentes versiones del kernel pueden tener diferentes opciones. Para obtener las opciones compatibles con su kernel actual, puede ejecutar el siguiente comando como root:
# echo h > /proc/sysrq-trigger
y verifique la salida de dmesg. A continuación se muestra un ejemplo en el sistema RHEL 7:
# dmesg [ 4338.124035] SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Tipos de eventos SysRq
Hay varios eventos SysRq que se pueden activar una vez que se habilita la función SysRq. Estos varían un poco entre las versiones del kernel, pero hay algunos que se usan comúnmente:
Clave | Función |
---|---|
m | volcar información sobre la asignación de memoria |
t | volcar información de estado del hilo |
p | volcar registros y banderas actuales de la CPU |
c | bloquear intencionalmente el sistema (pánico del núcleo). Útil para capturar un vmcore a través de kdump. |
s | sincronizar inmediatamente todos los sistemas de archivos montados |
u | volver a montar inmediatamente todos los sistemas de archivos de solo lectura |
b | inmediatamente reinicia la máquina |
o | apague inmediatamente la máquina (si está configurada y es compatible) |
f | iniciar el asesino sin memoria (OOM) |
w | descarga tareas que están en estado ininterrumpible (bloqueado) |
Cómo desencadenar un evento SysRq desde el shell raíz
Si tiene un shell raíz en la máquina (y el sistema responde lo suficiente como para hacerlo), también puede escribir el carácter de la tecla de comando en /proc/sysrq-trigger expediente. Esto es útil para activar esta información cuando no está en la consola del sistema o para activarla desde scripts.
# echo 'm' > /proc/sysrq-trigger
Este método tiene la ventaja adicional de funcionar incluso cuando kernel.sysrq se establece en 0.
CentOS / RHEL 6:Cómo configurar kdumpCentOS / RHEL 7:Cómo configurar kdump