8

Tmux 1.8 使 iOS Prompt 应用程序崩溃。

但我需要 1.8 才能获得 iTerm2 集成。

所以我希望我能以某种方式让我的服务器能够运行两个 tmux 服务器。但是,当我运行 1.8 服务器时,Tmux 1.6 似乎只是以状态码 1 退出。

我怀疑有人尝试过这样的事情,但我很好奇......

4

1 回答 1

14

您可以运行多个tmux实例(甚至是不同的版本),但它可能不会像您期望的那样工作:它们将完全独立(不同的会话、窗口、窗格、选项值等)。-Lor-S选项用于指定服务器套接字名称或路径名。

tmux new              # new session in the server at the "default" socket
tmux -L other attach  # new session in the server at the "other" socket

默认套接字和-L套接字存在于 中$TMPDIR/tmux-$UID/,但-S如果您想自己指定完整路径名,可以使用。

当您在tmux会话“内部”时,TMUX 环境变量指定服务器套接字的路径,因此如果您只是与“周围”服务器对话,通常不需要指定套接字(路径)名称:您可以只需用于tmux neww在当前会话中创建一个新窗口(无论它使用什么套接字路径名)。

但是,尝试运行两个截然不同的tmux版本还有另一个问题。tmux二进制文件和正在运行的服务器必须使用相同的“协议版本”。由于一些内部变化,1.6 和 1.8 版本使用不同的协议版本。这意味着您不能使用 1.6 二进制文件与 1.8 服务器(即使用 1.8 二进制文件启动的服务器)通信,反之亦然。因此,即使您可能不需要指定套接字名称(当在会话“内部”运行命令时),您可能需要在尝试与不同服务器通信时指定二进制文件。

tmux attach               # 1.8 talking to existing 1.8 "default" server
tmux-1.6 -L other attach  # 1.6 talking to existing 1.6 "other" server

您可以通过设置环境变量和使用 shell 函数(或脚本,但注意不要创建无限循环)来稍微简化一些事情。

tmux() { command "${TMUXBIN:-tmux}" "$@"; }
于 2013-04-04T07:03:20.577 回答