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

Ripristinare la sessione tmux dopo il riavvio

C'è un modo per salvare una sessione tmux? In altre parole, se riavvio il computer, perderò sempre le sessioni?

Risposte (5)

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

Sì, se riavvii il computer perderai le sessioni. Le sessioni non possono essere salvate. Ma possono essere scriptate. Quello che la maggior parte fa infatti è scrivere alcune sessioni in modo da poterle ricreare. Per esempio, ecco un banale script di shell per creare una sessione:

#!/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

Ecco cosa fa. Per prima cosa, controlla se c'è già una sessione con quel nome (in questo caso, il nome originale è “script”) con tmux has-session. Controlla il codice di ritorno. Se c'è già una sessione in corso con quel nome, salta il ciclo “if” e va direttamente all'ultima riga, dove si attacca alla sessione. Altrimenti, crea una sessione e le invia alcune chiavi (per ora esegue solo uno script a caso). Poi esce dal blocco “if” e si attacca.

Questo è un esempio molto banale. Potete creare più finestre, riquadri e simili prima di attaccare.

Questo non sarà la stessa cosa che avete chiesto, però. Se fai delle modifiche alla sessione, per esempio rinomini una finestra e crei un nuovo pannello in essa, se riavvii queste modifiche non saranno ovviamente salvate.

Ci sono alcuni strumenti che facilitano il processo di scripting delle sessioni, anche se preferisco fare le cose manualmente (penso sia più versatile). Questi strumenti sono Tmuxinator e Teamocil .

La mia principale fonte di informazioni è stato il libro Tmux “The Pragmatic Bookshelf”.

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

Ho scritto un semplice script bash che persiste le sessioni di tmux aperte, le finestre e le directory di lavoro correnti in ciascuna.

Chiamatelo così manualmente o periodicamente da cron (perché potreste dimenticarlo):

tmux-session save

Scriverà su ~/.tmux-session. Ripristinateli dopo il riavvio in questo modo:

tmux-session restore

Lo trovo molto meglio di uno script Perl lungo diverse centinaia di righe.

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

tmuxinator ](https://github.com/tmuxinator/tmuxinator) è uno strumento scritto in Ruby, che potrebbe essere usato per creare e gestire sessioni tmux con facilità. Può essere usato per creare un progetto, che potrebbe poi essere istanziato come sessione tmux.

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

Considerate questa soluzione parziale trovata qui

L'autore crea una funzione che salva la storia della sessione tmux per persistere lo stato della sessione tmux dopo un riavvio del server.

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

Uso con successo https://github.com/jimeh/tmuxifier per ricreare le sessioni. Questo può essere installato senza ruby, semplicemente usando git.

I campioni sono abbastanza auto esplicativi, ad es: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh