Restaurar a sessão do tmux após a reinicialização

224

Existe alguma maneira de salvar uma sessão do tmux? Em outras palavras, se eu reiniciar o computador, sempre perderei as sessões?

    
por KendallB 21.06.2012 / 06:17

5 respostas

146

Sim, se você reiniciar seu computador, perderá as sessões. Sessões não podem ser salvas. Mas eles podem ser roteirizados. O que a maioria faz é, de fato, script algumas sessões para que você possa recriá-las. Por exemplo, aqui está um script de shell trivial para criar uma sessão:

#!/bin/zsh                                                                                                   

SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null

if [ $? != 0 ] 
 then
    tmux new-session -s $SESSIONNAME -n script -d
    tmux send-keys -t $SESSIONNAME "~/bin/script" C-m 
fi

tmux attach -t $SESSIONNAME

Aqui está o que faz. Primeiro, ele verifica se já existe alguma sessão com esse nome (neste caso, o nome original é "script") com tmux has-session . Ele verifica o código de retorno. Se já existe uma sessão com esse nome, ele pula o ciclo "if" e vai direto para a última linha, onde é anexado à sessão. Caso contrário, ele cria uma sessão e envia algumas chaves para ela (apenas executando um script aleatório por enquanto). Em seguida, sai do bloco "se" e anexa.

Esta é uma amostra trivial muito . Você pode criar várias janelas, painéis e semelhantes antes de anexar.

Isso não será a mesma coisa que você pediu, no entanto. Se você fizer alguma alteração na sessão, por exemplo, renomear uma janela e criar um novo painel, se você reiniciar as alterações, obviamente não serão salvas.

Existem algumas ferramentas que facilitam o processo de sessões de script, embora eu prefira fazer as coisas manualmente (acho que é mais versátil). Essas ferramentas são Tmuxinator e Teamocil .

Minha principal fonte de informações foi o livro "The Pragmatic Bookshelf" Tmux.

    
por 22.06.2012 / 10:58
106

Eu escrevi um script bash simples que persiste em abrir sessões tmux, windows e current diretórios de trabalho em cada um.

Chame-o assim manualmente ou periodicamente do cron (porque você pode esquecer):

tmux-session save

Ele gravará em ~/.tmux-session . Restaure-os após a reinicialização da seguinte forma:

tmux-session restore

Acho isso muito melhor do que um script Perl com centenas de linhas de comprimento.

    
por 05.07.2013 / 00:37
71

Eu escrevi um plugin tmux que permite que você salve o ambiente tmux completo e restaure-o mais tarde. Ele se esforça para ser realmente detalhado, para que você tenha a sensação de nunca sair do tmux.

link

Atualização: agora há um plug-in tmux-continuum que executa salvamentos em segundo plano automáticos do ambiente tmux. Opcionalmente, ele também * automaticamente * restaura o env tmux após a reinicialização do computador.

    
por 30.08.2014 / 11:16
10

tmuxinator é uma ferramenta escrita em Ruby, que pode ser usada para criar e gerenciar sessões do tmux com facilidade. Poderia ser usado para criar um projeto, que mais tarde poderia ser instanciado como uma sessão do tmux.

    
por 26.06.2014 / 19:40
5

Considere esta solução parcial encontrada aqui

O autor cria uma função que salva o histórico da sessão do tmux para manter o estado da sessão do tmux após uma reinicialização do servidor.

    
por 02.02.2013 / 22:54

Tags