tmux-Sitzung nach Neustart wiederherstellen
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?
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?
Ja, wenn Sie Ihren Computer neu starten, verlieren Sie die Sitzungen. Sitzungen können nicht gespeichert werden. Aber sie können geskriptet werden. Was die meisten tun, ist, einige Sitzungen zu skripten, damit Sie sie neu erstellen können. Hier ist zum Beispiel ein triviales Shell-Skript, um eine Sitzung zu erstellen:
#!/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 prüft es mit tmux has-session, ob es bereits eine Sitzung mit diesem Namen gibt (in diesem Fall ist der ursprüngliche Name “script”). Es prüft den Rückgabewert. Wenn es bereits eine laufende Sitzung mit diesem Namen gibt, überspringt es den “if”-Zyklus und geht direkt zur letzten Zeile, wo es sich mit der Sitzung verbindet. Andernfalls erstellt es eine Sitzung und sendet einige Schlüssel an sie (es führt nur ein zufälliges Skript aus). Dann verlässt es den “if”-Block und hängt sich an.
Dies ist ein sehr triviales Beispiel. Sie können mehrere Fenster, Fensterbereiche und ähnliches erstellen, bevor Sie anhängen.
Dies ist jedoch nicht genau das, was Sie wollten. Wenn Sie irgendwelche Änderungen an der Sitzung vornehmen, z. B. ein Fenster umbenennen und ein neues Fenster darin erstellen, werden diese Änderungen bei einem Neustart natürlich nicht gespeichert.
Es gibt einige Tools, die das Skripten von Sitzungen erleichtern, obwohl ich es vorziehe, die Dinge manuell zu erledigen (ich denke, es ist vielseitiger). Diese Werkzeuge sind Tmuxinator und Teamocil .
Meine Hauptinformationsquelle war das Tmux-Buch “The Pragmatic Bookshelf”.
Ich habe ein einfaches Bash-Skript geschrieben , das offene tmux-Sitzungen, Fenster und aktuelle Arbeitsverzeichnisse in jedem persistiert.
Rufen Sie es wie folgt manuell oder periodisch von cron aus auf (weil Sie es vielleicht vergessen):
tmux-session save
Es schreibt nach ~/.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.
tmuxinator ist ein in Ruby geschriebenes Tool, mit dem sich tmux-Sessions einfach erstellen und verwalten lassen. Es kann verwendet werden, um ein Projekt zu erstellen, das später als tmux-Sitzung instanziiert werden kann.
Ich verwende erfolgreich https://github.com/jimeh/tmuxifier zur Wiederherstellung von Sitzungen. Dies kann ohne Ruby installiert werden, nur mit Git.
Beispiele sind ziemlich selbsterklärend, z.B.: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh