Qu'est-ce que l'état «sommeil interruptible» indique?

13

J’avais Firefox sur un LiveCD Parted Magic, puis (éventuellement) à la suite d’une combinaison de touches dont je ne me souviens pas, il s’est rapidement évaporé de l’écran et de la liste des barres de tâches / fenêtres.

Cependant:

  1. ps ax | grep firefox renvoie ce qui est en dessous (et la ligne inutile grep firefox ). ps et le gestionnaire de tâches de l'interface graphique affichent Firefox avec une utilisation apparemment inchangée des flux RSS, VM-SIZE et 0% d'utilisation du processeur.

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


  2. pstree | grep firefox renvoie:

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


  3. strace -p 1916 est renvoyé et semble rester sur cette ligne pour toujours:

    futex(0xac975608), FUTEX_WAIT_PRIVATE, 1, NULL

Je comprends par une réponse à Que signifient les valeurs de la colonne STAT dans ps? que S (dans Sl ) indique que le processus est à l'état interruptible sleep .

Quelqu'un peut-il expliquer plus en détail ce qu'est l'État?

MODIFIER

Je vais commencer une nouvelle question, avec plus de détails sur ma distribution, pour répondre à la 2ème question initiale.

    
posée user66001 20.10.2013 - 00:14
la source

3 réponses

14

@msw a bien expliqué votre deuxième Q et une partie de votre premier:

B) Suggest any relatively-easy ways to regain any form of control, to (at the very least) save the tabs I had annoyingly opened in Private Browsing mode?

Je vais donc essayer de parler un peu plus de votre 1er Q:

A) Elaborate as to what the state is, in more detail?

Les valeurs d'état Sl (c'est un L minuscule):

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

PROCESSSTATECODESRrunningorrunnable(onrunqueue)Duninterruptiblesleep(usuallyIO)Sinterruptiblesleep(waitingforaneventtocomplete)Zdefunct/zombie,terminatedbutnotreapedbyitsparentTstopped,eitherbyajobcontrolsignalorbecauseitisbeingtraced[...]

Pourplusdedétails,reportez-vousàlapagedemanuelSignal,man7signal,ainsiqu'àcetutorielintitulé: états du processus Linux .

    
réponse donnée 20.10.2013 - 00:52
la source
7

Vous n'avez rien fait pour le processus Firefox. Il était déjà dans l'état S avant. «Sommeil interruptible» signifie effectivement inactif. Le processus est en attente et se réveille lorsqu'il reçoit une entrée. C’est l’état normal d’un processus, sauf si vous l’attrapez pendant qu’il est occupé.

Vous avez fait disparaître la fenêtre. Peut-être que vous l'avez envoyé à un autre bureau. La façon de le ramener de manière «normale» dépend entièrement de votre gestionnaire de fenêtres, ce que vous n'avez pas spécifié.

Vous pourrez peut-être récupérer la fenêtre avec d’autres outils, mais cela dépendra dans une certaine mesure de ce qui lui est arrivé et de la coopération de votre gestionnaire de fenêtres. Essayez wmctrl . Commencez par lister les fenêtres Firefox avec wmctrl -l | grep Firefox . Notez l'ID de la fenêtre dans la première colonne, par exemple 0x12345678. Pour ramener une fenêtre sur le bureau actuel, utilisez wmctrl -R 0x12345678 ; Vous pouvez également utiliser wmctrl -a 0x12345678 pour passer à son bureau. Pour le maximiser (qui gère les fenêtres en dehors de l'écran ou réduit à un seul pixel), exécutez wmctrl -r 0x12345678 -b add,maximized_vert,maximized_horz . Vous pouvez également déplacer et redimensionner la fenêtre avec wmctrl -r 0x12345678 -e 1,50,100,1000,800 . Vous devrez peut-être masquer ou afficher la fenêtre avec wmctrl -r 0x12345678 -b remove,shaded ou wmctrl -r 0x12345678 -b remove,hidden .

    
réponse donnée 20.10.2013 - 01:00
la source
2

Il est possible pour les clients X de perdre leur connexion et de ne pas en être avertis. Le processus attend souvent sur la prise à travers laquelle rien ne viendra jamais, le laissant dans un sommeil interruptible.

Pour Firefox uniquement (et certains autres programmes tels que gvim ou chrome qui contiennent des dispositions spéciales pour le stockage de l'état en cas d'échec), procédez comme suit:

$ kill -TERM pid

donnera au processus une chance de sauvegarder la liste des onglets ouverts, mais je ne compte pas sur le contenu du formulaire ou sur un autre état à conserver.

    
réponse donnée 20.10.2013 - 00:32
la source

Lire d'autres questions sur les étiquettes