¿Qué indica el estado de "suspensión interrumpible"?

18

Tenía Firefox ejecutándose en un Parted Magic LiveCD, luego (posiblemente) como resultado de una combinación de teclas que no recuerdo, desapareció rápidamente de la pantalla y la Lista de la Barra de tareas / Ventana.

Sin embargo:

  1. ps ax | grep firefox devuelve el siguiente (y el innecesario grep firefox línea ). Ambos psy el Administrador de tareas de la GUI muestran firefox con RSS, VM-SIZE aparentemente sin cambios y 0% de uso de CPU.

    johndoe 1916 36.6 14.0 923772 504372 tty1 Sl 13:30 12:15 firefox


  2. pstree | grep firefox devoluciones:

    init─┬─2 * [ROX-Filer───firefox───25 * [{firefox}]]


  3. strace -p 1916 regresa, y aparentemente permanece en esta línea para siempre:

    futex(0xac975608), FUTEX_WAIT_PRIVATE, 1, NULL

Entiendo por una respuesta a ¿Qué significan los valores de la columna STAT en ps? eso S(en Sl) indica que el proceso está en uninterruptible sleep estado.

¿Alguien puede explicar qué es el estado, con más detalle?

EDITAR

Comenzaré una nueva pregunta, con más detalles en mi distribución, para abordar la segunda pregunta original.

user66001
fuente
@Braiam - Hecho. He sido reacio a hacer esto, como la primera vez que lo hice, de alguna manera la ayuda se alejó del problema, en discusiones basadas en la creencia de que estaba usando Parted Magic como mi distribución a tiempo completo. Sinceramente espero que esto no suceda esta vez :(
user66001

Respuestas:

18

@msw hizo un buen trabajo explicando su segunda Q, y algunas de sus primeras:

B) ¿Sugiere formas relativamente fáciles de recuperar cualquier forma de control, para (al menos) guardar las pestañas que abrí molestamente en el modo de navegación privada?

Así que intentaré abordar un poco más tu primera Q:

A) ¿Elaborar en cuanto a qué es el estado, con más detalle?

Los valores de estado Sl(Eso es una L minúscula):

   S    Interruptible sleep (waiting for an event to complete)
   l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

                 ciclo de vida del proceso

PROCESS STATE CODES
   R  running or runnable (on run queue)
   D  uninterruptible sleep (usually IO)
   S  interruptible sleep (waiting for an event to complete)
   Z  defunct/zombie, terminated but not reaped by its parent
   T  stopped, either by a job control signal or because
      it is being traced
   [...]

Se pueden ver más detalles en la página del manual de señales man 7 signal, así como en este tutorial, titulado: Estados de proceso de Linux .

slm
fuente
Muy (!) Útil para comprender el funcionamiento interno. ¡Gracias! +1
user66001
@ user66001 acepta la respuesta.también me ayuda gracias.
muneeb_ahmed
8

No le hiciste nada al proceso de Firefox. Ya estaba en el estado S antes. "Sueño interrumpible" significa efectivamente inactivo. El proceso está esperando y se activará cuando reciba una entrada. Ese es el estado normal de un proceso a menos que lo detecte mientras está ocupado.

Has hecho desaparecer la ventana. Tal vez lo enviaste a un escritorio diferente. Cómo recuperarlo de la forma "normal" depende completamente de su administrador de ventanas, que no especificó.

Es posible que pueda recuperar la ventana con otras herramientas, pero depende un poco de lo que le sucedió exactamente y de si su administrador de ventanas coopera. Prueba wmctrl . Primero enumere las ventanas de Firefox con wmctrl -l | grep Firefox. Tenga en cuenta la ID de la ventana en la primera columna, digamos 0x12345678. Para devolver una ventana al escritorio actual, use wmctrl -R 0x12345678; alternativamente, use wmctrl -a 0x12345678para cambiar a su escritorio. Para maximizarlo (que se encarga de las ventanas fuera de la pantalla o se reduce a un solo píxel), ejecute wmctrl -r 0x12345678 -b add,maximized_vert,maximized_horz. Alternativamente, mueva y cambie el tamaño de la ventana con wmctrl -r 0x12345678 -e 1,50,100,1000,800. Es posible que deba quitar o mostrar la ventana con wmctrl -r 0x12345678 -b remove,shadedo wmctrl -r 0x12345678 -b remove,hidden.

Gilles 'SO- deja de ser malvado'
fuente
Gracias Gilles: esto puede sonar inusual, pero no estoy seguro de qué Administrador de ventanas estoy ejecutando. ¿Podría ser LXDE (enumerado en un cuadro sobre LXPanel)? Además, wmctrl no parece estar disponible en mi distribución. Por favor, perdona mi ignorancia, pero ¿puedo wmctrl simplemente descargarse y ejecutarse, o debe instalarse (dependencias, etc.)?
user66001
@ user66001 LXDE es un entorno de escritorio. Su administrador de ventanas predeterminado es Openbox (no estoy seguro de si es compatible con otro). Si su distribución no tiene wmctrl, puede intentar descargar la fuente y compilarla. Depende de algunas bibliotecas, pero ninguna de ellas es exótica, todas deben ser proporcionadas por su distribución. Si lo ha hecho xdotool, es posible que pueda hacer todo esto, o al menos el que sea útil, así que pruébelo (mire los comandos de la ventana y los comandos de escritorio y ventana en el manual).
Gilles 'SO- deja de ser malvado'
Ah gracias. Tampoco xdotool: cuando quiere decir que "puede hacer todo esto", ¿habla de compilar wmctrlo de las operaciones que puede realizar con él? ¿Me puede indicar alguna guía recomendada para compilar fuentes de Linux (Nuevo en Linux, desde un entorno Windows)?
user66001
@ user66001 quise decir eso xdotooly wmctrltienen una funcionalidad similar (en cuanto a lo que necesita aquí, difieren en qué más ofrecen). Si eres nuevo en Linux, te recomiendo una distribución con más paquetes. Si está ejecutando RHEL o una variante como CentOS o Scientific Linux, hay un paquete en Repoforge . Si desea compilar desde la fuente, lea esto , pero sería más fácil instalar un paquete si puede encontrar uno.
Gilles 'SO- deja de ser malvado'
¿Hay alguna diferencia en qué herramienta debería ser más fácil de construir? Además, si uno no tuviera un administrador de paquetes en su distribución, ¿qué tipo de paquete? ¿Debería estar buscando (supongo que esta es una pregunta ilógica, pero en caso de que me equivoque al suponer que un paquete es solo un paquete de binarios, con las dependencias enumeradas y los cambios de configuración, pensé en preguntar)?
user66001
2

Es posible que los clientes X pierdan su conexión y de alguna manera no se les notifique. El proceso a menudo esperará en el zócalo a través del cual nunca llegará nada, dejándolo en un sueño ininterrumpido.

Solo para Firefox (y algunos otros programas como Gvim o Chrome que hacen provisiones especiales para almacenar el estado en falla) de una manera simple:

$ kill -TERM pid

le dará al proceso la oportunidad de guardar la lista de pestañas abiertas, pero no contaría con el contenido del formulario u otro estado para mantener.

msw
fuente
Es poco probable que un cliente X local pierda la conexión con el servidor X, especialmente como resultado de presionar una tecla. Matar a Firefox no guardaría información sobre Windows en modo de navegación privada.
Gilles 'SO- deja de ser malvado'
Hago uso de Lazarus , y (cuando no uso el modo de Navegación Privada para intentar cambiar mi cuenta principal de gmail, abrir gdocs para ver / editar documentos usando información de sitios web al lado de las pestañas, sin cerrar sesión en todas mis cuentas de gmail - Grr, Google) tienen FF "Recordar mis ventanas y pestañas de la última vez", por lo que solo me interesan las pestañas abiertas en el modo de navegación privada. Entonces, si bien es bueno conocer el argumento anterior kill, dudo que FF me salve las pestañas en esta situación. ¿Alguna forma de que FF se vuelva a unir a X?
user66001
"¿Alguna forma de que FF se vuelva a unir a X?" Como nunca he sido capaz de descubrir cómo se puede desasignar / destruir la ventana sin que el proceso del cliente reciba una señal, supongo que el socket del programa FF a la interfaz de usuario permanece abierto. Mientras un proceso esté conectado a un socket, no sé de ninguna manera que algún proceso pueda aprovecharlo. (Ahora que me hizo pensar en ello, sospecho que esto se debe a un error de protocolo entre el servidor X y el cliente que es increíblemente difícil (es decir, nunca lo intentaría) depurar).
msw