Est-il possible de sauvegarder une session tmux? En d'autres termes, si je redémarre l'ordinateur, est-ce que je perdrai toujours les sessions?
Oui, si vous redémarrez votre ordinateur, vous perdrez les sessions. Les sessions ne peuvent pas être enregistrées. Mais, ils peuvent être scriptés. Ce que la plupart des gens font en réalité est de script certaines sessions pour pouvoir les recréer. Par exemple, voici un script shell simple 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 que ça fait. Tout d'abord, il vérifie s'il existe 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. Si une session portant ce nom est déjà en cours, le cycle "if" est ignoré et passe directement à la dernière ligne, où il est associé à la session. Sinon, il crée une session et lui envoie des clés (en exécutant simplement un script aléatoire pour le moment). Ensuite, il quitte le bloc "if" et se joint.
Ceci est un très échantillon trivial. Vous pouvez créer plusieurs fenêtres, volets et autres avant d’attacher.
Ce sera pas exactement ce que vous avez demandé. Si vous apportez des modifications à la session, par exemple si vous renommez une fenêtre et créez un nouveau volet, si vous redémarrez, ces modifications ne seront bien sûr pas enregistrées.
Certains outils facilitent le processus de création de scripts, bien que je préfère effectuer les tâches manuellement (je pense que c'est plus polyvalent). Ces outils sont Tmuxinator et Teamocil .
Ma principale source d'informations était "Le livre pragmatique" de Tmux.
J'ai écrit un script bash simple qui persiste dans les sessions tmux ouvertes, les fenêtres et les répertoires de travail actuels.
Appelez-le comme si manuellement ou périodiquement depuis cron (car vous pourriez oublier):
tmux-session save
Il écrira à ~/.tmux-session
. Restaurez-les après le redémarrage comme suit:
tmux-session restore
Je trouve cela beaucoup mieux qu’un script Perl de plusieurs centaines de lignes.
J'ai écrit un plugin tmux qui vous permet de sauvegarder l'environnement tmux complet et de le restaurer plus tard. Il s’efforce d’être vraiment détaillé afin que vous ayez l’impression de ne jamais quitter tmux.
https://github.com/tmux-plugins/tmux-resurrect
Mise à jour: il existe maintenant un plugin tmux-continuum qui effectue des sauvegardes automatiques en arrière-plan de l'environnement tmux. En option, il restaure également * automatiquement * tmux env après le redémarrage de l'ordinateur.
tmuxinator est un outil écrit en Ruby, qui pourrait être utilisé pour créer et gérer facilement des sessions tmux. Il pourrait être utilisé pour créer un projet, qui pourrait ensuite être instancié sous forme de session tmux.
Considérez cette solution partielle trouvée ici
L’auteur crée une fonction qui enregistre l’historique de la session tmux afin de conserver l’état de la session tmux après un redémarrage du serveur.