Gibt es eine Möglichkeit, eine tmux-Sitzung zu speichern? Mit anderen Worten, wenn ich den Computer neu starte, verliere ich dann immer die Sitzungen?
*** System restart required ***
Gibt es eine Möglichkeit, eine tmux-Sitzung zu speichern? Mit anderen Worten, wenn ich den Computer neu starte, verliere ich dann immer die Sitzungen?
*** System restart required ***
Antworten:
Ja, wenn Sie Ihren Computer neu starten, gehen die Sitzungen verloren. Sitzungen können nicht gespeichert werden. Sie können jedoch mit Skripten versehen werden. Tatsächlich besteht das meiste darin, einige Sitzungen per Skript zu erstellen, damit Sie sie neu erstellen können. Hier ist zum Beispiel ein einfaches Shell-Skript zum Erstellen einer Sitzung:
#!/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
Hier ist was es tut. Zuerst wird geprüft, ob es eine Sitzung mit diesem Namen gibt (in diesem Fall lautet der ursprüngliche Name "script"), die mit tmux has-session ausgeführt wird . Es überprüft den Rückkehrcode. Wenn es bereits eine laufende Sitzung mit diesem Namen gibt, überspringt sie den "Wenn" -Zyklus und wechselt direkt zur letzten Zeile, in der sie der Sitzung angehängt wird. Andernfalls wird eine Sitzung erstellt und einige Schlüssel an diese gesendet (derzeit wird nur ein zufälliges Skript ausgeführt). Dann wird der "if" -Block verlassen und angehängt.
Dies ist eine sehr triviale Stichprobe. Sie können vor dem Anhängen mehrere Fenster, Fensterbereiche und dergleichen erstellen.
Dies wird jedoch nicht genau das sein, wonach Sie gefragt haben. Wenn Sie Änderungen an der Sitzung vornehmen, beispielsweise ein Fenster umbenennen und ein neues Fenster erstellen, werden diese Änderungen beim Neustart natürlich nicht gespeichert.
Es gibt einige Tools, die das Erstellen von Skripten vereinfachen. Ich bevorzuge es jedoch, die Dinge manuell zu erledigen (ich denke, es ist vielseitiger). Diese Tools sind Tmuxinator und Teamocil .
Meine Hauptinformationsquelle war das Tmux-Buch "The Pragmatic Bookshelf".
tmux send-keys ...
Linie?
some command; if [ $? != 0 ]; then .....
ist einfach zu schreiben (und lesen) , wie: if ! some command; then .....
.
Ich habe ein einfaches Bash-Skript geschrieben , das geöffnete tmux-Sitzungen, Fenster und aktuelle Arbeitsverzeichnisse in jedem von ihnen beibehält.
Rufen Sie es wie folgt manuell oder periodisch von cron aus auf (weil Sie es vielleicht vergessen haben):
tmux-session save
Es wird an schreiben ~/.tmux-session
. Stellen Sie sie nach dem Neustart wie folgt wieder her:
tmux-session restore
Ich finde das viel besser als ein mehrere hundert Zeilen langes Perl-Skript.
Ich habe ein tmux-Plugin geschrieben, mit dem Sie die gesamte tmux-Umgebung speichern und später wiederherstellen können. Es ist bestrebt, wirklich detailliert zu sein, damit Sie das Gefühl haben, nie aufhören zu müssen.
https://github.com/tmux-plugins/tmux-resurrect
Update: Jetzt gibt es ein tmux-continuum- Plugin, das automatische Hintergrundspeicherungen der tmux-Umgebung durchführt. Optional wird auch * automatisch * tmux env nach dem Neustart des Computers wiederhergestellt.
tmuxinator ist ein in Ruby geschriebenes Tool, mit dem Sie mühelos tmux-Sitzungen erstellen und verwalten können. Es kann verwendet werden, um ein Projekt zu erstellen, das später als tmux-Sitzung instanziiert werden kann.
Betrachten Sie diese Teillösung, die Sie hier finden
Der Autor erstellt eine Funktion, die den Verlauf der tmux-Sitzung speichert, um den Status der tmux-Sitzung nach einem Neustart des Servers beizubehalten.
Ich verwende https://github.com/jimeh/tmuxifier erfolgreich zur Neuerstellung von Sitzungen. Dies kann ohne Rubin installiert werden, nur mit Git.
Beispiele sind ziemlich selbsterklärend, zB: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh