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?
*** System restart required ***
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?
*** System restart required ***
Réponses:
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 créer des scripts pour certaines sessions afin de pouvoir 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 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 exemple très trivial. Vous pouvez créer plusieurs fenêtres, volets et autres avant d’attacher.
Ce ne sera pas la même chose que vous avez demandé, cependant. Si vous apportez des modifications à la session, par exemple si vous renommez une fenêtre et créez un nouveau volet, si vous réinitialisez ces modifications, celles-ci 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.
tmux send-keys ...
ligne?
some command; if [ $? != 0 ]; then .....
est plus facile d'écrire (et lire) comme: if ! some command; then .....
.
J'ai écrit un script bash simple qui persiste dans les sessions ouvertes tmux, 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 va écrire à ~/.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 en arrière-plan automatiques 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.
J'utilise avec succès https://github.com/jimeh/tmuxifier pour recréer des sessions. Cela peut être installé sans rubis, en utilisant simplement git.
Les exemples sont assez explicites, par exemple: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh