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:
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 |