2012-06-21 04:17:49 +0000 2012-06-21 04:17:49 +0000
277
277

Restaurar a sessão de tmux após reiniciar

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

Respostas (5)

176
176
176
2012-06-22 08:58:34 +0000

Sim, se reiniciar o seu computador, perderá as sessões. As sessões não podem ser guardadas. Mas, elas podem ser programadas. De facto, o que mais se faz é escrever algumas sessões para que as possa recriar. 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, verifica se já existe alguma sessão com esse nome (neste caso, o nome muito original é “script”) com tmux has-session*. Verifica o código de retorno. Se já houver uma sessão em curso com esse nome, salta o ciclo “se” e vai directamente para a última linha, onde se liga à sessão. Caso contrário, cria uma sessão e envia-lhe algumas chaves (apenas executando um script aleatório por agora). Em seguida, sai do bloco “se” e anexa-se.

Esta é uma amostra muito trivial. Pode criar múltiplas janelas, vidros, e coisas do género antes de anexar.

Isto não* será exactamente a mesma coisa que pediu, no entanto. Se fizer quaisquer alterações à sessão, por exemplo, renomear uma janela e criar um novo painel na mesma, se reiniciar essas alterações não serão, obviamente, guardadas.

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

A minha principal fonte de informação foi o livro “The Pragmatic Bookshelf” Tmux.

122
122
122
2013-07-04 22:37:01 +0000

Escrevi um simples guião de bash que persiste em sessões de tmux abertas, janelas e directórios de trabalho actuais em cada uma.

Chame-lhe assim manualmente ou periodicamente de cron (porque se pode esquecer):

tmux-session save

Escreverá para ~/.tmux-session. Restabeleça-os após reiniciar assim:

tmux-session restore

Acho isto muito melhor do que um script Perl com várias centenas de linhas.

10
10
10
2014-06-26 17:40:29 +0000

tmuxinator ](https://github.com/tmuxinator/tmuxinator) é uma ferramenta escrita em Ruby, que poderia ser utilizada para criar e gerir sessões de tmux com facilidade. Poderia ser utilizado para criar um projecto, que mais tarde poderia ser instanciado como sessão de tmux.

5
5
5
2013-02-02 21:54:54 +0000

Considere esta solução parcial encontrada aqui

O autor cria uma função que guarda a história da sessão tmux a fim de persistir o estado da sessão tmux após um reinício do servidor.

1
1
1
2019-05-03 08:24:08 +0000

Utilizo com sucesso https://github.com/jimeh/tmuxifier para recriar sessões. Isto pode ser instalado sem rubi, utilizando apenas o git.

As amostras são bastante auto-explicativas, por exemplo https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh