1 login gnu-screen tmux session
有没有办法从正在运行的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
Run Code Online (Sandbox Code Playgroud)
但我也想确保最后一个连接的终端是唯一一个仍然连接到用户tmux会话的终端。
它有办法做到这一点吗?我也接受基于screen(或其他多路复用器)的解决方案;)
如果我正确理解了您的问题,则-d可以选择attach-session执行您想要的操作:
tmux -2 attach-session -d -t $WHOAMI
Run Code Online (Sandbox Code Playgroud)
这会附加到指定的目标会话并分离所有其他客户端。
您可以在会话附加后执行类似的操作,使用detach-client's-a和-t选项:用 来命名客户端-t,并添加-a以将所有客户端与指定客户端分离。
screen也有一个-d选项可以做同样的事情。