重启后恢复 tmux 会话

重启后恢复 tmux 会话

有什么方法可以保存 tmux 会话吗?换句话说,如果我重新启动计算机,我是否会丢失会话?

答案1

是的,如果你重启电脑,会话就会丢失。会话无法保存。但是,它们可以编写脚本。大多数人实际上做的是脚本一些会话,以便您可以重新创建它们。例如,下面是创建会话的简单 shell 脚本:

#!/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

它的作用如下。首先,它检查是否已有同名的会话(在本例中,原始名称是“script”)tmux 有会话。它会检查返回代码。如果已经有一个同名的正在进行的会话,它会跳过“if”循环并直接转到最后一行,在那里它会附加到该会话。否则,它会创建一个会话并向其发送一些密钥(目前只是运行一个随机脚本)。然后它退出“if”块并附加。

这是一个非常简单示例。您可以在附加之前创建多个窗口、窗格等。

这会不是但与你要求的完全一样。如果你对会话做了任何更改,例如重命名窗口并在其中创建新窗格,那么重新启动后这些更改当然不会被保存。

有一些工具可以简化脚本编写过程,尽管我更喜欢手动操作(我认为它更通用)。这些工具包括多路复用器西地那非

我的主要信息来源是“实用书架”Tmux 书。

答案2

我写了一个简单的 bash 脚本它会在每个会话、窗口和当前工作目录中持久保存打开的 tmux 会话、窗口和当前工作目录。

像这样手动或定期从 cron 调用它(因为您可能会忘记):

tmux-session save

它将写入~/.tmux-session。重启后恢复它们,如下所示:

tmux-session restore

我发现这比几百行长的 Perl 脚本好多了。

答案3

我写了一个 tmux 插件,可以让你保存完整的 tmux 环境并在以后恢复。它力求做到非常详细,让你有一种从未退出 tmux 的感觉。

https://github.com/tmux-plugins/tmux-resurrect

更新:现在有一个tmux-连续体插件可自动在后台保存 tmux 环境。此外,它还可在计算机重启后自动恢复 tmux 环境。

答案4

考虑发现的这个部分解决方案这里

作者创建了一个保存 tmux 会话历史记录的函数,以便在服务器重启后保留 tmux 会话的状态。

相关内容