Revivendo um servidor X11 preso enquanto mantém os aplicativos da GUI em execução

1

Eu tenho executado um servidor X por vários dias. Hoje, devido a alguma falha temporária, está desligada. A multiplicidade de aplicativos X - editores de texto, navegador da Web, aplicativos gráficos, etc - ainda estão em execução e provavelmente estão bem. O servidor X parece ter ido mal.

Eu posso iniciar um novo servidor x em outro terminal virtual - ctrl-alt-F1, ctrl-alt-F2, etc. O original morto está em ctrl-alt-F1, e reportaria DISPLAY =: 0 se poderia fazer qualquer coisa. Eu comecei novos em ctrl-alt-F2 onde DISPLAY =: 1 e ctrl-alt-F3 onde DISPLAY =: 2.

Até este evento de hoje, eu não sabia que o Linux poderia rodar mais de um servidor X de cada vez, e tê-los associados com vterms como este. Antes, era sempre o F7 que tinha o servidor X ou o F5 há muitos anos. Estou usando o Arch Linux, instalado há cerca de um mês. Eu não acompanho muito as notícias do X11 ou do Linux.

PERGUNTA: o servidor F1 original está mostrando apenas a tela preta com um cursor. O cursor se move. Mas os aplicativos, que aparecem em "ps aux" e dão outros sinais de vida ao lado de sua GUI, tenho certeza que ainda estão em execução.

PERGUNTA: existe alguma maneira de dar um pontapé no servidor F1 X11, ativá-lo, soltá-lo, reiniciá-lo, fazê-lo funcionar novamente? Sem perder os processos de GUI existentes, é claro.

Se não, a minha próxima pergunta é como mover um processo em execução como o GIMP, Kwrite, etc. de aparecer no servidor DISPLAY =: 0 X para ficar totalmente presente e funcional no servidor: 2. Mas essa é uma questão à parte e foi feita em outro lugar. Antes de tentar brincar com isso, porém, eu gostaria de ver se posso reviver o servidor X original.

    
por DarenW 03.06.2014 / 05:33

1 resposta

3

Se o seu servidor X estiver travado, não há muito o que fazer. Sua única aposta é matar aplicativos esperando que o que o fez congelar (como um jogo 3D preso em um loop infinito que monopoliza o servidor) libera os recursos e ele começa a funcionar novamente. Pode ser o gerenciador de composição também se você usar um para poder matá-lo e reiniciá-lo e ver se ele ajuda (a maioria dos DEs modernos faz, e se você usar o Gnome, o shell matará toda a sua sessão). No entanto, as probabilidades são mais que o servidor é apenas irrecuperável, a menos que você queira cavar fundo com o gdb (você não estaria perguntando aqui se você fosse capaz).

Passando para a próxima pergunta, tenho certeza de que não é possível mover aplicativos de um servidor X para outro:

  • Aplicativos GUI geralmente têm mais do que apenas a conexão com o servidor X. Eles podem ter vários outros recursos anexados a eles, incluindo alguns ligados à placa gráfica. Por exemplo: contextos OpenGL. Você está tentando mover um aplicativo de dois servidores locais, mas o X11 é na verdade um protocolo de rede. O servidor X de destino também poderia estar no lado oposto do globo com hardware e tudo diferente.

  • A maioria dos aplicativos não planeja perder a conexão com o servidor X. Ainda estou para encontrar qualquer aplicativo que até mesmo lide com uma conexão perdida com o servidor: a maioria dos aplicativos simplesmente falha em vez disso.

  • Mover um aplicativo de um servidor X para outro quebraria muitos pressupostos que os aplicativos fazem no início, particularmente sobre o que está disponível para eles (versões do OpenGL, versão do X, extensões). Lidar com todos esses casos de borda não vale a pena o incômodo.

  • Não é esperado que o Xorg falhe, da mesma forma que os aplicativos não esperam que o kernel morra ou se quebre.

Existem, de fato, maneiras de mover as janelas de um servidor X para outro, mas isso envolve o uso de um proxy X11 como o Xdmx . É o único que eu encontrei, não atualizado desde 2004 e tem alguns problemas. Eu não contaria com isso para o trabalho real.

Apenas matar o Xorg e reiniciar é provavelmente sua melhor solução. Apenas lembre-se de salvar seu trabalho com frequência!

    
por 03.06.2014 / 07:14