是的,如果你重启电脑,你将失去会话。会话不能被保存。但是,它们可以被脚本化。事实上,大多数人做的是对一些会话进行脚本化,这样你就可以重新创建它们。例如,这里有一个创建会话的简单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书。
我写了一个简单的bash脚本,它可以持久化打开的tmux会话、窗口和每个窗口的当前工作目录。
像这样手动调用或定期从cron调用(因为你可能会忘记):
tmux-session save
它会写入~/.tmux-session
。重启后像这样恢复它们。
tmux-session restore
我发现这比几百行长的Perl脚本要好得多。
tmuxinator是一个用Ruby编写的工具,它可以用来轻松创建和管理tmux会话。它可以用来创建一个项目,之后可以实例化为tmux会话。
我成功地使用 https://github.com/jimeh/tmuxifier 来重新创建会话。这可以在没有ruby的情况下安装,只需使用git。
示例是很容易解释的,例如 https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh