为什么 tmux 在每个 shell 会话中只能附加一次?

为什么 tmux 在每个 shell 会话中只能附加一次?

我在 Fedora 8 服务器(工作场所限制)上使用 tmux 来监控压力架上的多个盒子。我注意到tmux session每个 shell 会话只能附加到我的分离一次。为了重新连接,我必须终止终端会话并启动另一个终端会话,否则我的attach命令就会挂起(尽管Ctrl-bd挂起的命令分离)。

以前有人见过这样的行为吗?任何指导或参考资料将不胜感激。

答案1

在我的 Shell 的配置文件中(我使用 zsh,所以它在我的 .zshrc 中,应该在 .bashrc 中工作)我有以下内容:

# Default to TMUX
if [ -z "$TMUX" ]; then
  base_session=$USER"_session"
  # Create the base session if it doesn't exist
  tmux has-session -t $base_session || tmux new-session -d -s $base_session
  # Get a count of clients connected
  client_cnt=$(tmux list-clients | wc -l)
  if [ $client_cnt -ge 1 ]; then
    # Make a unique session name
    session_name=$base_session"-"$client_cnt
    # Create the new session based on the base_session
    tmux new-session -d -t $base_session -s $session_name
    # Launch the connection with a few caveats (kill the session when the client goes away)
    tmux -2 attach-session -t $session_name \; set-option destroy-unattached
  else
    tmux -2 attach-session -t $base_session
  fi
fi

现在,我可以使用 PuTTY 多次连接到一台服务器,并在所有窗口中查看相同的会话(并更改一个连接以显示不同的窗口)。我也想要

编辑

想法这之前工作过一次,然后我才知道我一定还在screen,所以我修复了这个来进行单独的会话。我发表了评论,如果您有任何疑问,请告诉我。现在有一个缺点,它会为两个窗口选择最小的尺寸。这没有帮助......我目前正在努力寻找解决方案。

编辑2

为了解决调整大小问题,请将以下行添加到您的.tmux.conf文件中

set-option -g aggressive-resize on

答案2

可能是版本问题。您可以重新附加会话,但您将无法像使用 那样查看不同的窗口screen

要重新连接到会话:

$ tmux attach -t <session-name>

答案3

您可以尝试附加到会话并显式删除任何其他连接:

tmux a -d

相关内容