面临的问题
通常在本地电脑远程连接服务器,在服务器上下载一些东西或者训练模型,那么就要等命令执行结束才能停止与服务器的ssh连接,否则再次连接无法找到上一次连接的终端,也就无法看到下载进度和训练进度。
tmux功能介绍
tmux就是为了解决上面问题的一个工具。主要有以下功能:
- 丝滑分屏
- 保护现场(attach),即命令行只工作到一半,关闭终端后还可以进入刚刚的命令行现场。
- 会话共享
由于我只会用到第二种功能,所以下面主要介绍该功能,其他功能有兴趣可以自行学习。
tmux安装
sudo apt-get install tmux
tmux复用终端
首先明确会话的概念,会话可以理解为终端。
-
新建会话
tmux #新建一个无名称的会话 tmux new -s demo #新建一个名称为demo的会话
-
离开当前会话
会话中有命令在执行,我希望先终止远程连接,下次连接能继续用,需要输入:tmux detach # 离开当前会话,会话在后台运行
如果当前会话正在运行,离开方法如下:
首先点击ctrl+b,然后点击:进入命令行模式,输入detach命令回车即可。
-
查看所有存在的会话
tmux list-session # 查看所有的会话 tmux ls # 简便形式
-
进入指定的会话
想要进入之前创立的会话,使用下面的命令tmux a -t demo # 进入到demo会话
记忆:其中a是attach缩写,t是target缩写。
-
删除完成任务的会话
当会话的命令执行完毕后,使用kill命令删除会话。tmux kill-session -t demo #关闭名称demo会话 tmux kill-server # 关闭服务器上所有的会话
-
如果当前就在执行命令的会话中,如何快速切换其他会话
首先点击ctrl + b
,然后滑动鼠标滚轮选择会话,点击enter切换到新会话。
关于tmux更多使用教程,可以参考此篇blog。
如果有相关问题可以在评论区留言~