Vous pouvez hiberner sur le disque comme alternative
Mât Frëëman
36
L'hibernation est une alternative à laisser votre ordinateur en marche, sans redémarrer.
Chepner
5
@chepner: Il y a ces jours où*** System restart required ***
karatedog
2
@ karatedog Oui, nous sommes donc tous deux d'accord pour dire que l'hibernation n'est pas une solution pour perdre votre session tmux au redémarrage.
Chepner
Réponses:
170
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:
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.
ne sonne pas comme ça ne fera rien si je veux restaurer une session avec 5 fichiers ouverts. Pas moyen de faire ça?
Chovy
4
Tmux ne sait rien de l'état des processus en cours d'exécution. Vous pouvez créer un script avec les mêmes fichiers ouverts en sélectionnant "vim fichier1 fichier2 fichier3" avec la commande "touches-d'envoi" ou "fenêtre divisée" ou en consultant la gestion de la session de votre éditeur (vim -S, etc.)
bloy
Quel est le but de la tmux send-keys ...ligne?
Dominykas Mostauskis
2
@DominykasMostauskis cette commande envoie les touches pressées à la session spécifiée. C'est comme entrer dans la session et entrer ces mêmes touches depuis le clavier. Dans ce cas, vous envoyez "~ / bin / script" suivi de Entrée.
Dakatine
1
la combinaison some command; if [ $? != 0 ]; then .....est plus facile d'écrire (et lire) comme: if ! some command; then ......
Fonini
117
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.
Est-ce seulement si vous avez une session tmux cependant?
Sevenearths
86
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.
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.
Tout comme j'ai posté ma "réponse" avec le même lien, j'ai levé les yeux - "do'h!" Vous avez trouvé ceci en essayant de vous rappeler le nom de votre plugin.
phatskat
Ce plugin n'est pas mauvais, mais il n'a pas restauré tous mes programmes. Va lire plus de vos documents et peut-être soumettre un problème sur github.
Arne
@Arne Selon le programme, cela peut nécessiter un point de contrôle du programme. Au lieu de cela, je recommanderais de configurer vos programmes pour la restauration (fichiers .vimrc persistants et positions du curseur pour vim, etc.) et de stocker la commande tmux pane_current_command pour des programmes tels que man pouvant être rouverts. Le point de contrôle est très compliqué à mon avis, mais mérite d'être examiné dans tous les cas.
John P
@ bruno-sutic quelle est la diffrence entre votre plugin (tmux-resurrect) et tmux-coninuum?
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.
*** 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:
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.
la source
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):
Il va écrire à
~/.tmux-session
. Restaurez-les après le redémarrage comme suit:Je trouve cela beaucoup mieux qu’un script Perl de plusieurs centaines de lignes.
la source
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.
la source
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.
la source
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.
la source
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
la source