如果我使用 命令连接到 tmux 会话tmux a
,我最终会与朋友共享该会话,我们无法处理自己的事务(因为我们必须在不同的窗口中工作)。另一方面,如果我使用 连接tmux a -d
,我朋友的会话将被断开,他(或者更确切地说,我们中的一个人)无法在服务器上工作。
我知道此功能可能违背了 tmux 的“目的”,但我认为我还是应该问一下。有没有什么方法可以让我和我的朋友在服务器上使用同一个 tmux 会话并同时在不同的窗口中工作?
答案1
使用“分组会议”
您无需附加到会话,而是可以通过以下方式创建“分组会话-t
” new-session
:
tmux new-session -t 'original session name or number'
分组的会话总是具有相同的窗口(新的(关闭的)窗口被链接到(从)组中的所有会话中删除),但它们各自都有自己的会话选项,包括当前和以前的窗口值。
如果您和您的朋友各自在同一组的会话中工作,那么您可以在不同的窗口中工作,但仍可以轻松访问同一组窗口,甚至可以在同一个窗口中工作(如果合适)。
例子
创建初始会话:
tmux # start initial session, lets say it gets the name '3'
为了明确谁应该使用每个会话,您可能希望为每个会话指定一个助记名称。我将在下面使用his
和mine
,但您可能希望使用基于您的真实姓名、昵称、登录名或其他同样具有识别性的名称。
将此原始会话重命名为,his
并(在原始会话之外)创建一个名为的分组会话mine
:
tmux rename-session -t 3 his
tmux new-session -d -t his -s mine # leave off -d to attach right away
当你想要附加到“会话”的克隆时:
tmux attach-sesssion -t mine
当你的朋友想要附加到他的“会话”克隆时:
tmux attach-session -t his
您可以kill-session
关闭其中一个会话,另一个会话将继续存在。您必须终止组中的所有会话,然后它们的窗口才会被强制关闭。
tmux命令缩写
如果你正在编写tmux命令,最好使用完整的命令名称(如上所述)以避免歧义并有助于“自我文档化”。如果您输入它们,则可以使用缩写:
new-session
:new
, 或者new-s
,new-se
,new-ses
, …rename-session
:rename
, 或者rename-s
,rename-se
,rename-ses
, …attach-session
:a
,,,at
…attach
,,,,…attach-
attach-s
kill-session
:kill-ses
,,kill-sess
…