GNU/Linux >> Tutoriales Linux >  >> Linux

Mi proceso fue eliminado pero no puedo entender el aviso del kernel

SAK en este caso realmente significa Clave de atención segura . El mensaje que está viendo es un mensaje del kernel definido en drivers/tty/tty_io.c. SAK es una combinación de teclas que garantiza un inicio de sesión seguro para un usuario en la consola. En Linux, SAK garantiza esto eliminando todos los procesos adjuntos al terminal en el que se invoca SAK. Se espera que init luego reiniciará el proceso de inicio de sesión de confianza como getty seguido de login o servidor X con administrador de pantalla .

Los PID enumerados son de hecho PID de subprocesos de su aplicación CX_SC3 que fueron asesinados por SAK.

fd#n opened to the tty significa que el proceso/subproceso que se eliminó tenía el descriptor de archivo n abierto en el terminal en el que se invocó SAK.

En Linux hay dos formas de invocar SAK:

  1. A través de la tecla mágica SysRq, normalmente Alt +SysRq +K (terminal virtual) o Pausa K (consola serie). Este no es tu caso, ya que intentaste deshabilitar la magia SysRq por echo 0 > /proc/sys/kernel/sysrq y enviando el Pausa K la secuencia por accidente es improbable.

  2. A través de una secuencia de teclas definida (terminal virtual) o la señal de ruptura (consola serial). La disponibilidad de SAK en una consola serie está controlada por setserial .

La señal de interrupción en una línea serial es el envío continuo de valores de espaciado durante un tiempo mayor que el tiempo de envío de caracteres (incluidos los bits de inicio, parada y paridad). En su caso, es muy probable que la condición de la señal de interrupción aparezca durante el apagado de su máquina host. Intente desactivar SAK en su puerto serie en el dispositivo de destino antes del setserial :

setserial /dev/ttyS0 ^sak

Puede comprobar el estado de la funcionalidad SAK en el puerto serie mediante setserial -g /dev/ttyS0 . Cuando esté encendido, mostrará SAK después de Flags: . Para la configuración automática de la opción después del arranque, consulte los scripts de inicio que en los sistemas BusyBox suelen ser /etc/init.d/rcS y /etc/rc.d/S* o marque /etc/inittab para otras posibilidades.


Logré resolver el problema con la ayuda de la respuesta de pabouk. La solución basada en código que finalmente descubrí que permite el SAK El indicador que se establecerá/deshabilitará en el puerto serie cuando se abra usando la API de espacio de usuario se puede encontrar en stackoverflow aquí ¿Cómo puedo deshabilitar la opción SAK del puerto serie en Linux usando la API de espacio de usuario?


Linux
  1. Linux:¿qué sucedería si fallara un disco duro mientras se ejecutaba el kernel de Linux?

  2. ¿Hay alguna forma de cambiar las variables de entorno de otro proceso en Unix?

  3. Encontrar qué proceso fue eliminado por Linux OOM killer

  4. ¿Por qué el proceso secundario sigue vivo después de que el proceso principal se eliminó en Linux?

  5. ¿Cuál es la fuente actual del kernel de Linux?

Analizar el kernel de Linux con ftrace

Mi historia de Linux:Aprendiendo Linux en los años 90

¿Cómo iniciar programas GUI Linux desde la línea de comandos, pero separados de la línea de comandos?

¿Cuál es la diferencia entre Kernel no preventivo, preventivo y selectivo?

¿Usa el kernel 3.x de Linux el programador de procesos CFS?

¿Qué archivo en /proc lee el kernel durante el proceso de arranque?