O que indica o estado “sleep interrompível”?

13

Eu tinha o Firefox rodando em um LiveCD do Parted Magic, então (possivelmente) como resultado de uma combinação de teclas que não me lembro, ele desapareceu rapidamente da tela e da Barra de Tarefas / Lista de Janelas.

No entanto:

  1. ps ax | grep firefox retorna o abaixo (e a desnecessária grep firefox line). O ps e o Gerenciador de Tarefas da GUI mostram o firefox com RSS, VM-SIZE e 0% de uso da CPU aparentemente imutáveis.

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


  2. pstree | grep firefox retorna:

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


  3. strace -p 1916 retorna e aparentemente permanece nessa linha para sempre:

    futex(0xac975608), FUTEX_WAIT_PRIVATE, 1, NULL

Eu entendo de uma resposta para O que os valores da coluna STAT em ps significam? que S (em Sl ) indica que o processo está em um estado interruptible sleep .

Alguém pode elaborar o que é o estado, com mais detalhes?

EDITAR

Vou começar uma nova pergunta, com mais detalhes sobre a minha distro, para abordar a segunda questão original.

    
por user66001 20.10.2013 / 00:14

3 respostas

14

O @msw fez um bom trabalho explicando seu segundo Q e alguns de seus primeiros:

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?

Então, vou tentar abordar seu 1º Q um pouco mais:

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

Os valores de estado Sl (isso é um L minúsculo):

   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[...]

Maisdetalhespodemservistosnapáginamandosinal,man7signal,bemcomonestetutorial,intitulado: estados do processo do Linux .

    
por 20.10.2013 / 00:52
7

Você não fez nada no processo do Firefox. Já estava no estado S antes. “Interrupção do sono” efetivamente significa inativo. O processo está aguardando e será ativado quando receber uma entrada. Esse é o estado normal de um processo, a menos que você o pegue enquanto estiver ocupado.

Você fez a janela desaparecer. Talvez você tenha enviado para uma área de trabalho diferente. Como trazer de volta o modo "normal" é totalmente dependente do seu gerenciador de janelas, que você não especificou.

Você pode recuperar a janela com outras ferramentas, mas isso depende do que aconteceu com ela e se o gerenciador de janelas coopera. Experimente wmctrl . Primeiro liste as janelas do Firefox com wmctrl -l | grep Firefox . Observe a identificação da janela na primeira coluna, digamos 0x12345678. Para trazer uma janela de volta para a área de trabalho atual, use wmctrl -R 0x12345678 ; Como alternativa, use wmctrl -a 0x12345678 para alternar para sua área de trabalho. Para maximizá-lo (que cuida das janelas fora da tela ou reduziu para um único pixel), execute wmctrl -r 0x12345678 -b add,maximized_vert,maximized_horz . Como alternativa, mova e redimensione a janela com wmctrl -r 0x12345678 -e 1,50,100,1000,800 . Você pode precisar desfazer ou exibir a janela com wmctrl -r 0x12345678 -b remove,shaded ou wmctrl -r 0x12345678 -b remove,hidden .

    
por 20.10.2013 / 01:00
2

É possível que os clientes X percam sua conexão e, de alguma forma, não sejam notificados sobre isso. O processo muitas vezes espera na tomada através da qual nada virá, deixando-o em um sono ininterrupto.

Para o Firefox somente (e alguns outros programas como o gvim ou o chrome, que fazem provisões especiais para armazenar estado em falha), um simples:

$ kill -TERM pid

dará ao processo uma chance de salvar a lista de abas abertas, mas eu não contaria com o conteúdo do formulário ou outro estado a ser mantido.

    
por 20.10.2013 / 00:32