使用 1 个命令从 tmux 会话分离并关闭 ssh 会话

使用 1 个命令从 tmux 会话分离并关闭 ssh 会话

我经常想退出 ssh 会话,但又不想终止我正在使用的 tmux 会话。为此,我必须运行以下命令:

tmux detach
exit

或者使用快捷方式Ctrl+B D,然后exit.

有没有办法将其简化为一个命令?我尝试过使用别名,但它似乎在 tmux 会话内执行这两个命令。

答案1

您可以使用tmux detach -P

或者使用~.退出 ssh (这将分离 tmux,因为它的 tty 消失了)。

答案2

我不会自动断开连接,而是更改连接。我猜您当前使用 SSH 连接,然后运行tmux attach​​;如果你结合这两个步骤,

 ssh -t user@host tmux attach

SSH 会话与附加进程的生命周期相关tmux,而不是与初始 shell 相关,并且分离tmux将自动关闭 SSH 连接。

答案3

除非你的设置是奇怪,你可以终止 SSH 连接Enter ~ .(所有单独的按键)。会话tmux应该被分离(就像任何其他 SSH 断开连接一样)。

答案4

在 ssh 连接上自动启动 tmux。分离时注销。 经过 linuxkid完全按照OP的要求,完全在bash中:

当 ssh 进入服务器时,该位会自动打开 tmux。如果会话不存在,则会创建一个新会话。否则,将附加最后一个会话。这应该始终在 .bashrc 中最后运行或作为 .bashrc.d 中的脚本运行。用户在分离时从服务器注销。
# This should always be run last either in .bashrc or as a script in .bashrc.d
if [[ -z "$TMUX" ]]; then
    tmux has-session &> /dev/null
    if [ $? -eq 1 ]; then
      exec tmux new
      exit
    else
      exec tmux attach
      exit
    fi
fi

相关内容