C'è un modo per salvare una sessione di tmux? In altre parole, se riavvio il computer, perderò sempre le sessioni?
*** System restart required ***
C'è un modo per salvare una sessione di tmux? In altre parole, se riavvio il computer, perderò sempre le sessioni?
*** System restart required ***
Risposte:
Sì, se riavvii il computer perderai le sessioni. Le sessioni non possono essere salvate. Ma possono essere scritti. Quello che la maggior parte fa in effetti è scrivere alcune sessioni in modo da poterle ricreare. Ad 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. Innanzitutto, controlla se c'è già una sessione con quel nome (in questo caso, il nome originale è "script") con tmux has-session . Verifica il codice di ritorno. Se c'è già una sessione in corso con quel nome, salta il ciclo "if" e passa direttamente all'ultima riga, dove si collega alla sessione. Altrimenti, crea una sessione e vi invia alcune chiavi (per ora, eseguendo uno script casuale). Quindi esce dal blocco "if" e si attacca.
Questo è un esempio molto banale. È possibile creare più finestre, riquadri e simili prima di collegarli.
Questa non sarà la stessa cosa che hai chiesto, però. Se si apportano modifiche alla sessione, ad esempio si rinomina una finestra e si crea un nuovo riquadro al suo interno, se si riavvia tali modifiche non verranno ovviamente salvate.
Ci sono alcuni strumenti che facilitano il processo di sessioni di scripting, anche se preferisco fare le cose manualmente (penso che sia più versatile). Tali strumenti sono Tmuxinator e Teamocil .
La mia principale fonte di informazioni era il libro Tmux "The Pragmatic Bookshelf".
tmux send-keys ...
linea?
some command; if [ $? != 0 ]; then .....
è più facile da scrivere (e leggere) come: if ! some command; then .....
.
Ho scritto un semplice script bash che persiste in ogni sessione di sessioni, finestre e directory di lavoro correnti.
Chiamalo così manualmente o periodicamente da cron (perché potresti dimenticare):
tmux-session save
Scriverà a ~/.tmux-session
. Ripristinali dopo il riavvio in questo modo:
tmux-session restore
Lo trovo molto meglio di una sceneggiatura Perl lunga diverse centinaia di righe.
Ho scritto un plug-in tmux che ti consente di salvare l'ambiente tmux completo e ripristinarlo in seguito. Si sforza di essere davvero dettagliato in modo da avere la sensazione di non aver mai smesso di fumare.
https://github.com/tmux-plugins/tmux-resurrect
Aggiornamento: ora c'è un plugin tmux-continuum che esegue salvataggi automatici in background dell'ambiente tmux. Opzionalmente anche * automaticamente * ripristina tmux env dopo il riavvio del computer.
tmuxinator è uno strumento scritto in Ruby, che potrebbe essere utilizzato per creare e gestire facilmente sessioni di tmux. Potrebbe essere usato per creare un progetto, che in seguito potrebbe essere istanziato come sessione tmux.
Considera questa soluzione parziale trovata qui
L'autore crea una funzione che salva la cronologia della sessione tmux al fine di mantenere lo stato della sessione tmux dopo il riavvio del server.
Uso con successo https://github.com/jimeh/tmuxifier per ricreare sessioni. Questo può essere installato senza ruby, usando solo git.
I campioni sono piuttosto autoesplicativi, ad esempio: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh