GNU/Linux >> Tutoriales Linux >  >> Linux

¿Sistema Linux congelado? Aquí hay 3 formas de lidiar con eso

Se sabe que Linux es muy estable, pero incluso el sistema más estable puede encontrar situaciones que hagan que no responda. Luego viene la horrible sensación al presionar y mantener presionado "Power". Hay algunos trucos con Linux que uno puede intentar en tal caso. En este punto, no buscamos guardar ningún trabajo no guardado. Queremos encontrar una manera de evitar un reinicio o al menos proporcionar el reinicio más limpio posible para evitar la corrupción.

A los efectos de este artículo, Linux puede verse como un conjunto de 2 pilas:la pila del núcleo y la pila del usuario. En algún lugar dentro de la pila de usuarios, tiene programas ejecutándose. Lo más probable es que tenga un servidor X, un administrador de ventanas y algunos programas. Puede imaginar esa lista de programas, incluido el servidor X, como otra pila dentro de la Pila de usuario. Este concepto ayudará a los nuevos usuarios de Linux a comprender algunas de las tareas que realizaremos más adelante.

1. Elimina un programa que no responde con xkill

Si está utilizando un escritorio Linux, su primer paso debe ser un intento de utilizar la función de comando de ejecución de su administrador de ventanas (alt+f2 en Ubuntu). Si tiene suerte, aparecerá más pronto que tarde.

Entonces puedes ejecutar xkill y apunte el cursor a la ventana desaparecida y haga clic para quitarla.

Xkill funciona más rápido que el icono X tradicional o haciendo clic con el botón derecho en la ventana de la barra de tareas y haciendo clic en cerrar. Xkill mata instantáneamente sin hacer preguntas.

2. Revive un sistema Linux congelado con consolas virtuales (TTY)

A veces, no tendrá tanta suerte, el sistema puede parecer completamente muerto.

Esto podría ser sólo una ilusión. ¿Recuerdas la pila de programas dentro de la pila de usuario? Trabajemos un poco con esta imagen.

Si bien puede parecer que la raíz de la pila de usuario sería X, no lo es.

El sistema X Window se ejecuta en una Consola virtual (VC ), también conocido como TTY. Están representados en el sistema de archivos como /dev/ttyX. Linux tiene múltiples VC disponibles para usted. Intentar acceder a otro puede devolverte el control.

Puede solicitar un VC diferente presionando CTRL+ALT+F{1,6} desde un entorno GUI o ALT+F{1,6} de otra CV. La pulsación de tecla anterior le da acceso a VC 1 a 6. La interfaz gráfica se ejecuta en VC 7+.

Cuando se trata de un sistema inestable, incluso solicitar un cambio de VC puede llevar un poco de tiempo, así que tenga un poco de paciencia.

Si su intento de cambiar la consola virtual tiene éxito, se le solicitará su usuario y contraseña. A continuación, tendrá una consola de modo de texto. Su sistema debería recuperar algo de estabilidad aquí, esto se debe en parte a que la consola virtual donde se ejecutan X y todo lo demás ya no es una prioridad.

Una vez que haya iniciado sesión, tiene algunas opciones.

  • Puedes intentar matar un programa inactivo con matar o matar a todos comando.
  • Puede eliminar el administrador de ventanas, el servidor X o el administrador de inicio de sesión. Esto eliminará todos los procesos secundarios y, si todo va bien, su administrador de inicio de sesión se reiniciará y le presentará su pantalla gráfica de inicio de sesión.

3. Cuando todo lo demás falla, habla con el Kernel usando SysReq

A veces, incluso cambiar a un TTY no funciona. Todo el sistema está muerto. No te rindas todavía, una vez más, más que probable es una ilusión. Linux tiene una característica más para situaciones como esta.

Si se compila en el kernel y se habilita en un archivo, Linux le brinda los medios para enviar solicitudes preestablecidas directamente al kernel. Esto es útil en una situación en la que toda la pila de usuarios está muerta. Se conoce como la tecla Magic SysRq. . Compilado y habilitado de forma predeterminada en la mayoría de las distribuciones, solo un Kernel Panic debería poder evitar que esto funcione.

Para confirmar que la opción se configuró cuando se compiló el kernel, puede intentar ubicar el archivo de configuración de su kernel actual en /boot. Busque la opción CONFIG_MAGIC_SYSRQ. Como se mencionó anteriormente, está compilado y habilitado en la mayoría de las distribuciones. Para confirmar que está habilitado, ejecute lo siguiente:

sysctl kernel.sysrq

En los sistemas más antiguos, tenía 2 opciones:0 y 1. Estaba APAGADO o ENCENDIDO. En los más nuevos, hay un control más preciso sobre qué comandos están habilitados.

Cualquier valor por encima de 1 significa que algunos comandos están habilitados. Puede encontrar más detalles aquí.

Para establecer un valor diferente temporalmente, ejecute el siguiente comando:

sudo sysctl -w kernel.sysrq=value

Para cambiar este valor de forma permanente, edite /etc/sysctl.conf . Busque kernel.sysrq y establezca el valor deseado.

La forma más fácil de ver si funciona es probar. También recomiendo probar y aprender un conjunto de pulsaciones de teclas mientras el sistema está estable. Cuando ejecuta una llamada SysRq, el núcleo intentará responder. Esta respuesta solo se puede ver si está en una consola virtual de 1 a 6. Si el foco no se puede mover lejos de X, no verá las respuestas. Esto no significa que no esté funcionando.

Hay numerosos comandos que se pueden enviar. La lista completa se puede ver aquí. Recomiendo memorizar lo siguiente:

Esta breve lista de comandos le brinda una nueva y poderosa herramienta cuando se trata de un sistema inestable. Al enviar la solicitud, si no puede ver las respuestas del kernel, espere unos segundos entre los comandos. Preste atención a la luz del disco duro cuando solicite el funcionamiento del disco duro.

Hay 2 secuencias que vale la pena recordar.

Alt + SysRq + r e k

Esta secuencia es buena para reiniciar un servidor X que no responde. Primero saca el teclado del modo sin formato con Alt + SysRq + r . Luego solicita enviar un SIGTERM a todos los procesos con Alt + SysRq + e . El servidor X puede reiniciarse con esta solicitud. Si es así, ha rescatado su sistema. Si no, continúa con la tercera solicitud, Alt + SysRq + k . Que enviará SIGKILL a todos los procesos dentro de la consola virtual actual.

Si su sistema sigue sin responder después de la secuencia anterior, debe continuar con la siguiente secuencia.

Alt + SysRq + r e i s u b

Este último comando iniciará un reinicio de emergencia.

  • r :sacar el teclado del modo sin formato
  • e :Enviar SIGTERM a todos los procesos
  • yo :Enviar SIGKILL a todos los procesos
  • s :sincroniza todos los sistemas de archivos montados
  • u :Montaje de emergencia solo lectura
  • b :reinicia el sistema al instante

Ahora está equipado con la mejor herramienta que conozco contra un sistema que no responde. Puede seguir este video de mi canal de YouTube para ver una demostración.

Espero que hayas aprendido algo nuevo sobre cómo lidiar con un sistema Linux congelado con este artículo. Me gustaría saber tu opinión al respecto. Utilice la sección de comentarios y comparta sus opiniones.


Linux
  1. Supervise su sistema Linux en su terminal con procps-ng

  2. Analizar el kernel de Linux con ftrace

  3. Comprender las llamadas al sistema en Linux con strace

  4. Comando de apagado de Linux (con ejemplos)

  5. Programación de tareas del sistema con Cron en Linux

Pen testing con herramientas de seguridad de Linux

10 maneras de empezar con Linux

Comando Uptime de Linux con ejemplos

Primeros pasos con el sistema operativo Linux

¿Linux es un sistema operativo o un kernel?

5 formas de verificar la información de la CPU en Linux

    Claves Descripción
    Alt + SysRq + r Saca el teclado del modo sin procesar, quitándole el control a X
    Alt + SysRq + e Envíe SigTerm a todos los procesos, dándoles la oportunidad de salir correctamente
    Alt + SysRq + i Enviar SigKill a todos los procesos
    Alt + SysRq + k Eliminar todos los procesos en la consola virtual actual
    Alt + SysRq + s Sincronizar todo el sistema de archivos montado, descargando todos los datos en el disco
    Alt + SysRq + u Remontar todo el sistema de archivos de solo lectura
    Alt + SysRq + b Reinicia el sistema al instante, no sincroniza ni desmonta
    Alt + SysRq + o Sistema de apagado