tmux 简介
tmux 是一个开源工具,用于在一个终端窗口中运行多个终端会话。它从 msys2 提取,可以在 Git for Windows 的 Git Bash (MingW64) 下正常使用。
tmux(以及 screen)正是专门为了解决'SSH 掉线后还能继续原来的会话'这个问题而设计的工具。
工具对比
| 工具 | SSH 掉线后还能连上原来的会话吗? | 说明 |
|---|---|---|
| 普通 bash / zsh | 不能 | 会话结束,进程收到 SIGHUP 信号,通常被杀死 |
| tmux | 能 | 会话独立于 SSH 连接存在,掉线后可以随时重新 attach |
| screen | 能 | 和 tmux 功能几乎一样,但 tmux 现在更流行、功能更强 |
| zellij | 能 | 更现代的替代品,但普及度不如 tmux |
tmux 的典型用法
-
SSH 掉线了也没关系(关浏览器、断网、电脑关机都行)
- 如果忘记会话名字了,可以先列出所有 tmux 会话:
tmux ls # 看到类似:mytrain: 1 windows (created Tue Feb 25 19:45:12 2026) [80x24]- 过一会儿重新 SSH 登录服务器,然后重新连上原来的 tmux 会话:
tmux attach -t mytrain # 或者简写 tmux a -t mytrain- 连上后,你会看到程序还在跑,输出还在继续,窗口布局、进程状态全部保留。
-
在 tmux 里面跑你的程序(比如训练脚本)
python standalone_warmup_with_wandb.py ... -
登录服务器后,先启动一个 tmux 会话
tmux new -s mytrain # -s 后面是会话名字,随便起
常用快捷键
在 tmux 里按 Ctrl+b 再按下面键:
d→ detach(脱离会话,但不关闭,程序继续跑)c→ 新建窗口n/p→ 切换下一个/上一个窗口,→ 重命名当前窗口w→ 窗口列表(鼠标或键盘选)Ctrl+b ?→ 查看所有快捷键帮助
常见问题与故障排除
嵌套会话警告
如果你遇到提示 sessions should be nested with care, unset $TMUX to force,是因为你已经在一个 tmux 会话里,又尝试启动新的 tmux 会话。tmux 默认不推荐嵌套会话。

