2012-06-21 04:17:49 +0000 2012-06-21 04:17:49 +0000
277
277

重启后恢复tmux会话

有什么方法可以保存tmux会话?换句话说,如果我重启电脑,我是否会一直失去会话?

答案 (5)

176
176
176
2012-06-22 08:58:34 +0000

是的,如果你重启电脑,你将失去会话。会话不能被保存。但是,它们可以被脚本化。事实上,大多数人做的是对一些会话进行脚本化,这样你就可以重新创建它们。例如,这里有一个创建会话的简单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

它是这样做的。首先,它用tmux has-session检查是否已经有了这个名字的session(在这种情况下,最初的名字是 “script")。它检查返回代码。如果已经有一个正在进行中的会话,它跳过 "if "循环,直接到最后一行,在那里它连接到会话。否则,它会创建一个会话,并发送一些密钥给它(目前只是运行一个随机脚本)。然后它退出 "if "块并连接。

这是一个非常琐碎的例子。你可以在附加之前创建多个窗口、窗格等。

这将不是你要求的非常的东西,不过。如果你对会话做了任何更改,例如你重命名了一个窗口并在其中创建了一个新的窗格,如果你重新启动,这些更改当然不会被保存。

有一些工具可以简化脚本会话的过程,尽管我更喜欢手动操作(我认为它更通用)。这些工具是 Tmuxinator Teamocil

我的主要信息来源是 "The Pragmatic Bookshelf "Tmux书。

122
122
122
2013-07-04 22:37:01 +0000

我写了一个简单的bash脚本,它可以持久化打开的tmux会话、窗口和每个窗口的当前工作目录。

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

tmux-session save

它会写入~/.tmux-session。重启后像这样恢复它们。

tmux-session restore

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

10
10
10
2014-06-26 17:40:29 +0000

tmuxinator是一个用Ruby编写的工具,它可以用来轻松创建和管理tmux会话。它可以用来创建一个项目,之后可以实例化为tmux会话。

5
5
5
2013-02-02 21:54:54 +0000

考虑一下这个部分解决方案这里

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

1
1
1
2019-05-03 08:24:08 +0000

我成功地使用 https://github.com/jimeh/tmuxifier 来重新创建会话。这可以在没有ruby的情况下安装,只需使用git。

示例是很容易解释的,例如 https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh