Algoritmos y Estructuras de Datos Herramientas Lenguaje de programación
!Prog C/C++ Rust
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Sistemas Operativos

Cuando Linux crashea


[words: 898] [reading time: 5min] [size: 13011 bytes]

Algunos consejos para cuando Linux deja de funcionar.

Programa que se congela

1xkill

Y hacer click en la ventana problemática.

Abrir una tty

Ctrl + Alt + F1 / F2 / F3 / ...

Desde ahí puedes utilizar los comandos ps y kill para deshacerte de los procesos causantes del problema.

Otras opciones son reiniciar el escritorio gráfico (depende de cual uses):

1sudo service lightdm restart
2sudo service gdm restart      # Ubuntu < 11.04
3sudo service kdm restart      # Kubuntu (KDE)
4
5sudo service <nombre> restart

Matar al Server X

Otra alternativa al punto anterior, es matando al Server X, encargado del escritorio gráfico. Por conveniencia, podemos asignarle un atajo de teclado, porque en el caso de que tengamos que reiniciarlo, la pantalla no estará operativa.

El atajo de teclado es normalmente Ctrl + Alt + Backspace.

Fuente: 9TO5 Answer

Activar SSH

Tener SSH activado puede ser útil cuando el sistema se queda colgado. Puedes intentar acceder a tu sistema por SSH (desde el móvil por ejemplo, con termux):

Para solucionar lo primero, puedes probar a reiniciar el escritorio gráfico como antes.

Funciones de SysRq

La combinación de teclas SysRq se puede utilizar para mandar comandos al Kernel y realizar diferentes operaciones directamente desde el teclado. Dicha combinación consiste en Alt + SysRq + <tecla>, donde SysRq es la tecla PrintScreen del teclado QWERTY normal.

En portátiles puede que tengas que utilizar Fn + SysRq + Alt + K, soltando Fn después de pulsar SysRq.

Para conseguir que funcione, debemos configurar un par de cosas.

El directorio /boot/config-<kernel version> contiene información sobre las opciones con las que se compiló el Kernel. Podemos buscar por la característica que nos interesa con grep:

1grep -i CONFIG_MAGIC_SYSRQ /boot/config-$(uname -r)

Y si todo va bien, debería aparecer algo como lo siguiente:

1CONFIG_MAGIC_SYSRQ=y
2CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
3CONFIG_MAGIC_SYSRQ_SERIAL=y

El valor y quiere decir que el Kernel seleccionado, tiene dicha característica. También podemos ver el que el número 0x01b6 es 438.

Ahora podemos comprobar qué opciones de SysRq están disponibles (algunas distribuciones restringen el acceso por razones de seguridad).

1cat /proc/sys/kernel/sysrq

El número devuelto se corresponde con una cadena de bits, cada bit con su propio significado (empezando a contar en 0).

       0    disable sysrq completely
bit 0) 1    enable all functions of sysrq
bit 1) 2    enable control of console logging level
bit 2) 4    enable control of keyboard (SAK, unraw)
bit 3) 8    enable debugging dumps of processes etc.
bit 4) 16   enable sync command
bit 5) 32   enable remount read-only
bit 6) 64   enable signaling of processes (term, kill, oom-kill)
bit 7) 128  allow reboot/poweroff
bit 8) 256  allow nicing of all RT tasks

Si por ejemplo, con el comando anterior obtenemos 176, se puede representar en binario como 1011 0000, por lo tanto, 176 = 2^4 + 2^5 + 2^7 = 16 + 32 + 128. Ahí, sería comprobar cada valor en la tabla para ver qué opciones tenemos activadas. Paralelamente, 0x01b6 = 438 = 2 + 4 + 16 + 32 + 128 + 256.

Y para poner el valor que nosotros queramos (1 en este caso), simplemente:

1sudo echo '1' > /proc/sys/kernel/sysrq

El problema, es que al reiniciar el sistema, se recuperará el valor anterior. La forma correcta de hacerlo es editando el siguiente archivo y cambiar el 176 (o el valor que sea) por 1.

1sudo nano /etc/sysctl.d/10-magic-sysrq.conf

El valor debe corresponder con el de /proc/sys/kernel/sysrq, así que cámbialo allí también.

1echo 1 | sudo tee /proc/sys/kernel/sysrq

Puedes comprobar si ha funcionado con apretando Alt + SysRq + F, que eliminará los procesos que más están consumiendo. Puedes cerrar con eso la pestaña actual el navegador hasta llegar al reinicio de Server X.

Para más información puedes consultar la documentación del Kernel de Linux, o la wikipedia.

NOTA IMPORTANTE: Si estas características no están activadas por defecto, debe de ser por un buen motivo. Es posible que el 244 sea un valor menos perjudicial que aún te permite realizar los siguientes trucos.

Fuente: Linux Config

REISUB

Cuando todo deja de funcionar, existe una forma más segura de reiniciar el ordenador que simplemente desenchufarlo.

Mientras mantienes presionado Alt y SysReq (Print Screen), escribe lentamente (para que dé tiempo a ejecutar cada acción) REISUB.

Significado:

R:  Cambiar al modo XLATE
E:  Mandar una señal de Terminar (SIGTERM) a todos los procesos, excepto init
I:  Mandar una señar de Matar (SIGKILL) a todos los procesos, excepto init
S:  Sincronizar todos los sistemas de archivos montados
U:  Remontar los sistemas de archivos en solo-lectura
B:  Reiniciar.

Consejos para recordar el comando:

Hay otra forma menos radical que reiniciar el sistema completo. Puedes utilizar el comando Alt + SysRq + F para ir eliminando los procesos más pesados uno a uno. Si lo prefieres, puedes eliminar todos los procesos de una consola de golpe con Alt + SysRq + K

Fuente: ask ubuntu

Volver a Linux Siguiente: Shell, Bash y Bashrc