Salve o estado completo da sessão da tela GNU

28

É possível persistir o "estado" de uma janela de tela do GNU (ou apenas um shell padrão) para que eu possa recarregar tudo após uma reinicialização:

  • O número de shells abertos
  • O nome de cada shell
  • O diretório atual de cada shell
  • O histórico de cada shell
  • Se possível, suas variáveis de ambiente
por Barthelemy 13.10.2010 / 11:41

4 respostas

18

Não é realmente possível salvar uma sessão de tela completa.

O que você pode fazer é criar um .screenrc adequado que irá configurar algumas coisas depois que você reiniciou o sistema.

Aqui estão alguns comentários para as coisas que você listou:

  • O número de shells abertos
  • O nome de cada shell
  • O diretório atual de cada shell

Eu uso algo assim no meu .screenrc para abrir alguns shells específicos na inicialização:

## set the default shell
shell                   zsh

# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]

Você obterá a string entre '' como o nome da sua janela e o comando após o nome será executado no seu shell padrão. Inclua qualquer script que você queira, por exemplo, alterar em um diretório específico e abrir alguns logs.

  • O histórico de cada shell

Você já pensou em compartilhar a história dos projéteis nas suas sessões? IMHO isso torna as coisas muito mais fáceis. No ZSH, é feito com setopt SHARE_HISTORY no seu .zshrc

  • Se possível, suas variáveis de ambiente

Se você realmente precisa disso e não quer nenhum compromisso, você pode pensar em um shell script, que lê o estado atual da tela, salva o número de shells, variáveis de ambiente, etc. e coloca essas informações em um script de inicialização chamado pelo seu .screenrc . Para mim isso não valeria a pena porque eu aprecio um ambiente limpo após uma reinicialização, se eu puder personalizar as janelas padrão para a tela.

    
por 13.10.2010 / 12:15
9

Eu tropecei em um projeto chamado screen-session . Ele permite que você salve e recarregue as sessões do GNU Screen até certo ponto.

    
por 14.12.2012 / 12:36
2

Existe uma ferramenta para congelar o estado de um processo chamado cryopid . No entanto, atualmente ele não funciona com a tela GNU, pois não suporta a recriação de uma hierarquia de subprocessos. Eles afirmam que querem alcançar isso no futuro, mas o projeto não parece estar muito ativo no momento. No entanto, você pode querer rastrear seu progresso.

    
por 13.10.2010 / 11:50
0

Eu construí uma coisa similar em solaris anos atrás. Nem mesmo relacionado à tela; foi sessão relacionada. "se $ TTY = qualquer". A echox tem a ideia certa.

dica: se você estiver fazendo isso em várias máquinas, reconheça que cada máquina merece sua própria definição do que deve ser feito quando você fizer login lá, em vez de ser tudo igual ao seu nfs montado / home ou similar.

HTH, -br

    
por 14.10.2010 / 10:53