it-swarm-pt.tech

Salvar concluído GNU

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

  • O número de conchas abertas
  • O nome de cada Shell
  • O diretório atual de cada Shell
  • A história de cada Shell
  • Se possível, suas variáveis ​​de ambiente
32
Barthelemy

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ê reiniciar o sistema.

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

  • O número de conchas abertas
  • 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ê receberá a string entre '' como o nome da janela e o comando após o nome ser executado no seu Shell padrão. Inclua qualquer script que desejar, por exemplo, altere em um diretório específico e abra alguns logs.

  • A história de cada Shell

Você já pensou em compartilhar a história dos reservatórios em 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 deseja nenhum compromisso, pode pensar em um script do Shell, 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 o esforço, porque eu aprecio um ambiente limpo após uma reinicialização, se eu puder personalizar as janelas padrão da tela.

20
echox

Eu me deparei com um projeto chamado sessão de tela . Permite salvar e recarregar GNU Sessões de tela até certo ponto.

10
BUGHUNTER

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 desejam alcançar isso no futuro, mas o projeto parece não estar muito ativo no momento, mas você pode acompanhar o progresso deles.

2
fschmitt

Eu construí uma coisa semelhante no solaris anos atrás. Nem mesmo relacionado à tela; foi relacionado à sessão. "se $ TTY = qualquer coisa". 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ê faz login lá, em vez de todas serem iguais para o seu nfs montado/doméstico ou similar.

HTH, -pbr

0
pbr