Faça a tela GNU sobreviver à reinicialização

17

Estou usando muito a tela do GNU. Acho muito irritante que toda vez que o servidor precise ser reiniciado eu perco todas as minhas sessões (mesmo que eu saiba de antemão, eu preciso configurar tudo de novo).

Eu pesquisei na web por possibilidades de como fazer com que a tela sobrevivesse a uma reinicialização, mas não encontrei nada que funcionasse para mim. Alguns dos métodos que encontrei e há falhas:

  • CryoPID : parece estar morto, prometendo desde 2005 incluir suporte para a tela
  • DMCTP : tem problemas com o setuid (), não funcionou para mim (admito que não tentei muito)
  • algum script tentando recriar a sessão do zero; você ainda perde seu histórico e eu acho que as variáveis do ambiente não estão corretamente definidas (e quando eu tentei ele não trouxe todas as sessões)

Talvez alguém conheça algum congelador de processo melhor? Esta parece ser a maneira mais promissora.

    
por fuenfundachtzig 28.09.2010 / 10:33

3 respostas

13

Não há como salvar uma sessão de tela da maneira que você deseja. O que eu fiz foi a próxima melhor coisa: autossh com script para se conectar aos meus servidores e configurar meu rig da maneira que eu gosto.

Adore.

Conexão local para baixo, eu espero, volta e há o meu trabalho (eu uso telas aninhadas). Servidor inativo ou reinicializado, aguardo e estou de volta à minha posição padrão. Isso me dá a sensação de continuidade que eu desejava.

Enfim, eu fiz essa pergunta há anos atrás na lista de tela.

Resumo: Não busque a vida eterna pela tela. Em vez disso, aprenda a ressuscitar.

Esta é a carne da configuração .screenrc:

Existe um exemplo, rscreen, no pacote autossh que eu modifiquei no programa econnect.

O parâmetro --esc é para definir o escape da tela remota para algo diferente (minha fuga é ')

#add much much more scrollback
defscrollback 10000

# make some default windows

screen -t ADMIN     1
chdir /Users/chiggsy/Sites/
screen -t SITES    2
chdir /Users/chiggsy/src/
screen -t SRC 3
chdir
screen -t FERGUS  4 /Users/chiggsy/bin/econnect --host host.example.com --port 50000 --esc g --user sol
screen -t LAEG 5  /Users/chiggsy/bin/econnect --host host.example2.com --port 505000  --esc g --user invictus

screen -t ROOT      0   sudo su -m
    
por 03.11.2010 / 06:00
1

Veja: link

Available screen-session modes: 

---- 
save              - save Screen ( and VIM ) session 
load              - load session 
ls                - list saved sessions 
---- 

dump              - print detailed informations about windows in the session 
group             - move windows to a group 
layoutlist        - display a list of layouts 
layout-checkpoint - record a snapshot of the current layout. 
layout-history    - display saved snapshots of the current layout 
layout-redo       - load a snapshot of the current layout, 
layout-undo       - load a snapshot of the current layout, 
layout-zoom       - zoom into and out of a region 
kill              - send SIGTERM to last the process started in a window 
kill-zombie       - kill all zombie windows in the session 
kill-group        - recursively kill all windows in a group 
manager           - sessions manager (screenie like) but featuring session 
                    preview in a split window 
nest-layout       - copy a layout to the current region 
new-window        - start a new Screen window in the same working directory 
                    on the position next to the current window 
name              - get or set the sessionname 
regions           - display a number in every region (like tmux display-panes) 
renumber          - renumber windows to fill gaps 
subwindows        - recursively print windows contained in groups 
    
por 01.05.2014 / 19:14
1

Na falha do servidor, a mesma pergunta recebeu uma dica que está faltando aqui: use tmux com tmux-ressurrect , que é:

Restore[s] tmux environment after system restart.

O que ele pode restaurar para você:

  • all sessions, windows, panes and their order
  • current working directory for each pane
  • exact pane layouts within windows (even when zoomed)
  • active and alternative session
  • active and alternative window for each session
  • windows with focus
  • active pane for each window
  • "grouped sessions" (useful feature when using tmux with multiple monitors)
  • programs running within a pane! More details in the restoring programs doc.
    
por 24.11.2015 / 10:33