有没有一种方法可以将所有终端从正在运行的tmux
会话中分离出来,除了我实际使用的终端之外?
这看起来有点奇怪,但这样做的意义是为最终用户远程会话保留一些“持久性”层,同时确保用户仅在“一个外壳”上使用系统。
正如所解释的这里,很容易根据用户名创建会话:
if [[ "$TMUX" == "" ]] &&
[[ "$SSH_CONNECTION" != "" ]]; then
# Attempt to discover a detached session and attach
# it, else create a new session
WHOAMI=$(whoami)
if tmux has-session -t $WHOAMI 2>/dev/null; then
tmux -2 attach-session -t $WHOAMI
else
tmux -2 new-session -s $WHOAMI
fi
fi
但我还想确保最后连接的终端是唯一保持连接到用户tmux
会话的终端。
它有办法实现这一点吗?我也接受基于screen
(或其他多路复用器)的解决方案;)
答案1
如果我正确理解了您的问题,则可以-d
选择attach-session
执行您想要的操作:
tmux -2 attach-session -d -t $WHOAMI
这会附加到指定的目标会话并分离所有其他客户端。
您可以在附加会话后使用和detach-client
选项执行类似的操作:使用 命名客户端,并添加以分离除指定客户端之外的所有客户端。-a
-t
-t
-a
screen
还有一个-d
选项可以做同样的事情。