1 什么是tmux?
- tmux (terminal multiplexer)是一种易用的终端复用器,简单来说,它允许我们在同一个终端窗口中创建多个不同的会话,支持同时执行不同的程序
- 会话是指用户与计算机的交互(可以理解为正在运行的进程的载体),通常终端窗口和会话是 绑定 的,即关闭终端窗口会导致会话和进程中断
- 使用tmux工具,可以有效地 解绑 终端窗口和会话,避免终端窗口被迫关闭导致的会话中断(也就是我们通俗讲的“代码挂服务器后台跑”,希望关机后继续跑代码~)
2 哪些场景用tmux?
- 需要并行训练多个模型,而不想重复创建多个终端窗口
- 远程连接服务器训练时,需要(主动/被动)关闭本地vscode(或者害怕突然停电关机!)
- 希望在任何终端窗口中重新进入之前的会话中/允许同一个会话在不同终端窗口中连接
- 支持同一终端窗口的拆分(纵向/水平均可)
3 基础操作介绍
3.1 安装tmux
安装tmux主要有两种方式,第一种将tmux当作一个系统的库安装,另一种是将tmux当作一个的Python的库安装:
# linux
sudo apt-get install tmux
# mac
brew install tmux
# python (anaconda)
pip install tmux / conda install tmux
注意:所有的tmux快捷操作都需要先按ctrl+B,然后再按其他键!!!
3.2 创建tmux会话
用以下命令创建指定名称的会话:
tmux new -s <session-name>
3.3 分离tmux会话
用以下命令分离会话与窗口:
tmux detach
ctrl+B D
执行后,就会退出当前tmux的窗口,但是会话和里面的进程仍然在后台运行。
3.4 查看tmux会话列表
用以下命令查看tmux所有存在的会话列表:
tmux ls
ctrl+B S
3.5 连接到tmux会话
用以下命令重新连接到指定的tmux会话:
tmux a -t <session-name>
3.6 杀掉tmux会话
用以下命令kill tmux指定名称的会话:
tmux kill-session -t <session-name>
3.7 切换tmux会话
用以下命令切换不同的tmux会话:
tmux switch -t <session-name>
3.8 重命名tmux会话
用以下命令重命名指定的tmux会话:
tmux rename-session -t <old-name> <new-name>
ctrl+B $
3.9 窗口浏览
如果直接用鼠标或键盘方向键去浏览tmux窗口,会出现命令行乱码。所以,用以下命令在tmux会话窗口中进行上下浏览:
ctrl+B [
# 停止浏览
Q
3.10 拆分窗格(Pane)
用以下命令在tmux窗口中纵向/横向拆分窗口:
# 划分左右两个窗格
ctrl+B %
# 划分上下两个窗格
ctrl+B "
3.11 窗格切换
# 光标切换到其他窗格中
ctrl+B <键盘方向键>
3.12 关闭窗口
ctrl+B X
y
学会了tmux的基本操作后,你就可以放心大胆地关闭你的vscode和电脑了!下次开机重新打开vscode连接服务器,然后进入tmux会话窗口中收获你的实验结果~
参考资料: