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

Restaurer la session tmux après le redémarrage

Y a-t-il un moyen de sauver une session tmux ? En d'autres termes, si je redémarre l'ordinateur, vais-je toujours perdre les sessions ?

Réponses (5)

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

Oui, si vous redémarrez votre ordinateur, vous perdrez les sessions. Les sessions ne peuvent pas être sauvegardées. Mais elles peuvent être programmées. En fait, la plupart d'entre eux se contentent de scripter certaines sessions pour que vous puissiez les recréer. Par exemple, voici un script shell trivial pour créer une session :

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

Voici ce qu'il fait. Tout d'abord, il vérifie s'il y a déjà une session portant ce nom (dans ce cas, le nom très original est “script”) avec tmux has-session. Il vérifie le code de retour. S'il y a déjà une session en cours avec ce nom, il saute le cycle “si” et va directement à la dernière ligne, où il s'attache à la session. Sinon, il crée une session et lui envoie quelques clés (en exécutant un script aléatoire pour l'instant). Ensuite, il quitte le bloc “if” et se joint à la session.

C'est un échantillon très trivial. Vous pouvez créer plusieurs fenêtres, volets, etc. avant de les joindre.

Mais ce ne sera pas exactement ce que vous avez demandé. Si vous apportez des modifications à la session, par exemple si vous renommez une fenêtre et y créez un nouveau volet, si vous redémarrez, ces modifications ne seront bien sûr pas enregistrées.

Il existe des outils qui facilitent le processus de scripting des sessions, bien que je préfère faire les choses manuellement (je pense que c'est plus polyvalent). Ces outils sont Tmuxinator et Teamocil .

Ma principale source d'information était le livre Tmux “The Pragmatic Bookshelf”.

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

J'ai écrit un simple script bash qui persiste à ouvrir les sessions tmux, les fenêtres et les répertoires de travail actuels dans chacune d'elles.

Appelez le comme ça manuellement ou périodiquement depuis le cron (parce que vous pourriez oublier) :

tmux-session save

Il écrira à ~/.tmux-session. Restaurez-les après le redémarrage comme ceci :

tmux-session restore

Je trouve cela bien mieux qu'un script Perl de plusieurs centaines de lignes.

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

tmuxinator est un outil écrit en Ruby, qui pourrait être utilisé pour créer et gérer des sessions tmux avec facilité. Il peut être utilisé pour créer un projet, qui peut ensuite être instancié en tant que session tmux.

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

Considérons cette solution partielle trouvée ici

L'auteur crée une fonction qui sauvegarde l'historique de la session tmux afin de maintenir l'état de la session tmux après un redémarrage du serveur.

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

J'utilise avec succès https://github.com/jimeh/tmuxifier pour recréer des sessions. Cela peut être installé sans ruby, en utilisant simplement git.

Les exemples sont assez explicites, par exemple https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh