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?
Existe alguma forma de salvar uma sessão de tmux? Por outras palavras, se eu reiniciar o computador, perderei sempre as sessões?
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.
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.
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.
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