远程Linux的常用工具——tmux终端复用器

440 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

背景

刚开始做算法训练的同学可能会遇到这么个情况,即直接利用terminal运行自己的代码,这种终端窗口属于一种临时的会话,如果关闭此terminal窗口,或者关闭vscode、ssh会话终止、网络突然断线等情况发生,那么这种临时会话内运行的进程也会随之终止,没有运行完的程序就会中断,而花了大量时间辛苦训练的模型就这么中途放弃了。

为了解决这个问题,可以将会话与窗口"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口,而Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。

tmux的安装

首先可以尝试下自己的Linux服务器有没有安装tmux,直接输入tmux指令就可以创建一个会话。如果没有,Linux 系统中通常使用 yum 来安装 tmux :

$ yum install tmux

3 快速上手tmux

3.1 tmux的前缀键

在介绍如何使用tmux之前,需要先介绍一下快捷键的使用。tmux 中的很多操作都是通过快捷键来实现的,通过快捷键我们可以更加高效的完成任务,如果想使用 tmux 中的快捷键,我们必须使用 tmux 的前缀按键 ctrl + b , 在 tmux中所有的快捷键都需要通过前缀按键去唤起的。

在 tmux 当中默认的前缀按键是 ctrl + b,当然这个前缀按键是可以通过 tmux 的配置文件 .tmux.conf 进行修改的,在本文里不再拓展配置相关内容。

3.2 常用操作介绍——从建立会话到运行程序

3.2.1 新建session

新建一个 session ,在终端输入一个 tmux 命令即可:

$ tmux

上面的命令会创建一个 session ,默认是通过数字编号来命令的,而有时候我们需要明确的知道我们的 session 的名字,方便我们快速进入该 session ,我们可以使用如下的命令:

$ tmux new -s <session-name>

比如我想利用“test”这个名字创建一个会话,就可以输入tmux new -s test

3.2.2 在tmux中创建多个窗口

新建完tmux会话之后,可以看到当前已经进入了一个与terminal不一样的窗口如下:

可以看到当前在“test”会话中的第0个窗口,但是有时我们需要同时运行几个程序,这就需要多开几个窗口。

创建窗口的快捷键是ctrl + b c, 可以通过快捷键快速的创建一个窗口出来,在此再次复习一下,实现快捷键需要先按一下crtl+b,松手之后再按c键。

按了两次创建窗口的快捷键后,可以看到新增了两个窗口,*号代表当前所在窗口

3.2.3 切换窗口

关于切换窗口的快捷键 :

ctrl + b n 快速切换到下一个窗口,可以使用next来记忆。

ctrl +b p 快速切换到上一个窗口,可以使用previous来记忆。

也可以使用ctrl +b w,然后使用上下键选择窗口名,按回车结束。

3.2.4 运行程序

使用conda虚拟环境运行程序的小伙伴,不要在tmux会话建立之前就激活虚拟环境,而是建立tmux会话之后再激活。因为在conda环境下进入的tmux,这时在tmux中可能会出现重加载conda环境失败的问题,表现为:同一个conda环境在终端可以正常运行,而在conda环境下进入tmux中却无法运行。

所以在tmux会话中激活所需conda环境即可,激活完毕后再新建窗口,这样每个窗口都是在激活的conda环境下。

现在就可以和往常一样,开始运行程序了。

3.2.5 离开 session

有时候我们需要离开终端,操作其他的任务,需要离开该任务,但是又想该任务继续在后台执行,这时候我们需要在 tmux 的任何一个窗格中输入如下命令:

$ tmux detach

也可以使用快捷键 ctrl + b d

3.2.6 进入 session

只要session没有被kill掉,下次可以使用

$ tmux attach -t <session-name>

如想再次进入test会话,则使用tmux attach -t test指令

3.2.7 关闭 session

如果再也不想使用这个会话,可以直接按 ctrl + d 来关闭当前的 session,这时会话里的所有进程都会结束。也可以使用kill-session指定会话名称:

$ tmux kill``-session -t <session-name>

3.2.8 查看 session 列表

有时候我们可能同时操作了好几个 session, 我们可以通过如下的命令来查看我们目前操作了几个session:

$ tmux ls

也可以通过快捷键操作 ctrl + b s 列出所有的 session。

3.3 在tmux设置鼠标滚动查看信息

tmux对滚屏不是很友好,默认是不能利用鼠标滚动的,但可以通过以下方法配置

按下ctrl+b,然后输入:set -g mouse on,按回车即可

4 参考链接

以上的指令已经够日常使用了,如果有其他需求,可以学习更多操作:

www.ruanyifeng.com/blog/2019/1…