Tmux 是一款终端复用命令行工具,一般用于 Terminal 的窗口管理。Tmux 拥有如下特性:

  • 可以同时开启多个会话和窗口,并持久地保存工作状态。
  • 断线后任务能够在后台继续执行。

例如,若您需要在 Terminal 中编辑一个文件,同时还需要在 Python 交互环境中执行命令,那么正常情况下您需要开启两个 Terminal。
若您使用 Tmux,则无须开启多个 Terminal,您可使用 session 管理会话和窗口,在多个会话和窗口之间进行切换。

Tmux 还能解决由于断线导致的任务丢失问题。一般的 shell 工具遇到断线,远程任务可能会中止并无法继续,重连后任务需从头再来。而在 Tmux 中运行的命令,会一直保存在服务器上,断线后只需从 Tmux 中恢复该会话,任务仍然在运行。

Tmux 安装

矩池云已经在 Pytorch 1.4.0 镜像和 TensorFlow1.13 & Keras2.2 镜像中,预置了 Tmux。

若您想自己安装 Tmux,可在 Terminal 中使用如下命令。

apt update
apt install tmux

矩池云建议您在本地 SSH 工具中使用 Tmux。不建议在 Jupyter 的 Terminal 中使用,以免 Tmux 的快捷键无法使用。

Tmux 由如下三个基础组成:

  1. Session。即会话,任务通常在 session 中运行,在断开连接后 session 仍会保持。
  2. Window。即窗口,一个会话可以包含多个窗口。可以存在多个窗口。
  3. Pane。即窗格,一个窗口可以包含多个窗格。类似于 Vim 中 C-w +v 后的效果。

使用 Tmux 管理会话

输入命令

tmux

即可进入 Tmux 环境。此时默认开启了一个 session-name 为 0 的 Tmux 会话。

左下角即当前窗口的 session-name。

例如您可以在这个会话中,输入 python 命令,进入 Python 交互环境。

此时如果您和服务器断开连接,tmux 中的任务还会继续保持。您可重新打开 Terminal 后,输入命令

tmux a -t 0

其中 0 为之前会话的 session-name。

如果您想从该会话中退出,可以输入如下命令:

tmux detach

会回到普通的 Terminal。

此时可以再次输入 tmux 命令开启一个新的会话。Tmux 默认的 session-name 会逐次加一,再次新建的会话默认 session-name 就是 1 了。

若想指定 session 名称以便记忆,可以使用命令:

tmux new -s [session-name]

例如:

tmux new -s matpool

左下角可以看到,该会话的名称为 matpool。

在普通 Terminal 页面中,可以查看所有的 Tmux 会话:

tmux ls

如果要删除指定会话,在普通 Terminal 页面中,输入命令:

tmux kill-session -t [session-name]

例如:

tmux kill-session -t 0

如果要删除所有会话:

tmux kill-server

删除后再次执行 tmux ls 命令,会看到已经没有运行中的 Tmux 会话。

切换会话:

tmux switch -t <session-name>

重命名会话:

tmux rename-session -t 0 <new-name>

窗口管理

在每个 session 会话中,您可以开启多个窗口和面板。

Tmux 为了防止与全局快捷键冲突,大部分快捷键需要先需要输入前缀,默认为 Ctrl + b。该操作被定义为 Prefix。

例如按下

Prefix c

会新建一个窗口。

左下方的 0:bash 即第一个窗口,1:bash 为第二个窗口,以此类推。

您可在每个窗口中执行不同的任务,任务会被保持至您 kill 为止。

窗口的其他操作:

选择窗口

Prefix [number] # 选择第n个窗口
Prefix p/n  # 选择前/后一个窗口

窗口名带 * 的为当前窗口。

关闭窗口

Prefix &
exit

列出所有窗口(包含其他Session)

Prefix w
j/k # 前后选择

搜索窗口

Prefix f

重命名当前窗口

Prefix ,

窗格管理

每个窗口可以被划分为多个面板。

新建一个水平窗格

Prefix %

新建一个垂直窗格

Prefix "

关闭窗格

Prefix x

在窗格间切换

Prefix o

显示窗格编号

Prefix q

切换到新窗口

Prefix !

窗格交换位置

Prefix + {/}

Tmux 常用快捷键

快捷键 说明
Prefix ? 显示快捷键帮助
Prefix : 进入命令模式
Prefix C-z 挂起会话,不影响其他命令的运行,C 表示 Ctrl 键
Prefix C-o 调换窗格位置
Prefix 空格键 采用下一个内置布局
Prefix ! 把当前窗格(pane)变为新窗口(window)
Prefix " 横向分隔窗格
Prefix % 纵向分隔窗格
Prefix q 显示分隔窗格的编号
Prefix o 跳到下一个分隔窗格
Prefix 上下键 上一个及下一个分隔窗格
Prefix C-方向键 调整分隔窗格大小,C 表示 Ctrl 键
Prefix z 最大化当前窗格,再一次则恢复
Prefix c 创建新窗口
Prefix 0~9 选择几号窗口
Prefix n 选择下一个窗口
Prefix p 选择前一个窗口
Prefix l 切换到前一个窗口,该快捷键通常会被重定义为符合 vim 下的空格切换
Prefix w 以菜单方式显示及选择窗口
Prefix s 以菜单方式显示和选择会话
Prefix t 显示时钟
Prefix ; 切换到最后一个使用的面板
Prefix x 关闭面板
Prefix & 关闭窗口
Prefix d 退出 Tmux,并保存当前会话,此时 Tmux 仍在后台运行,可以通过 Tmux attach 进入指定的会话

矩池云如何使用 Tmux 工具在后台运行任务相关推荐

  1. 矩池云上使用nvidia-smi命令教程

    简介 nvidia-smi全称是NVIDIA System Management Interface ,它是一个基于NVIDIA Management Library(NVML)构建的命令行实用工具, ...

  2. 矩池云上安装ikatago及链接教程

    https://github.com/kinfkong/ikatago-resources/tree/master/dockerfiles 从作者的库中可以看到,该程序支持cuda9.2.cuda10 ...

  3. 矩池云上TensorBoard/TensorBoardX配置说明

    Tensorflow用户使用TensorBoard 矩池云现在为带有Tensorflow的镜像默认开启了6006端口,那么只需要在租用后使用命令启动即可 tensorboard --logdir lo ...

  4. 矩池云使用conda安装离线安装包

    矩池云conda采用了清华源凡是清华源中有的包都可以很快下载,但是对于一些清华源中没有的包可以采用安装离线安装包的办法快速安装. conda经常由于网速问题, 在安装一些比较大的包时会卡住而失败. 例 ...

  5. 如何在矩池云GPU云中跑DeepFaceLab

    用Linux系统跑DeepFaceLab的文章我之前已经写过好几篇,有专门针对阿里云的,也有专门针对滴滴云的.今天来搞一搞矩池云(Linux系统安装DFL最新版). 这次的搞法会和以前不一样,这次将用 ...

  6. 如何在矩池云GPU云中安装MATLAB R2016b软件

    VNC登录 可以参考这个文章:https://blog.csdn.net/weixin_48344945/article/details/107023612 终端解压 我这里是已经事先将ISO转成了z ...

  7. 矩池云怎么上传文件夹

    在租用矩池云的过程中发现不能在网盘中直接上传文件夹,不知道有什么解决办法嘛? 我经过尝试找到两种方法,压缩包上传与SCP上传. 压缩包上传 第一种压缩包上传,我看到了CSDN上有大佬已经写过了,这边用 ...

  8. PuTTY 远程连接矩池云GPU主机

    PuTTY 是一款开源的连接软件,用来远程连接服务器,支持 SSH.Telnet.Serial 等协议. 矩池云的主机支持 SSH 登录,以下为使用 PuTTY 连接矩池云 GPU 的使用教程. 如您 ...

  9. 矩池云使用VNC Viewer远程连接GPU主机,图形用户界面操作

    一.什么是 VNC VNC 是一款优秀的远程控制工具软件.VNC 的服务器端应用程序在 Linux 操作系统中适应性很强,图形用户界面十分友好.在任何安装了客户端的应用程序 (VNC Viewer) ...

最新文章

  1. 【转】堆栈和托管堆 c#
  2. 如何打造项目级硬核简历,成为一名合格的大厂工程师(必看)
  3. [PM Tools]软件项目进度跟踪表v4.0
  4. 删除拼接id_轻流对接企业微信日程,实现日程创建/更改/删除
  5. 远程拷贝 linux服务器,linux scp 服务器远程拷贝(示例代码)
  6. [Angularjs]锚点操作服务$anchorScroll
  7. 阿里Java编程规约(集合)
  8. 惊呆了!被公司辞退拿了22万补偿金,原东家称每月涨薪7000,只要退还22万
  9. STM32工作笔记0030---编写跑马灯实验--使用库函数
  10. java中方法_java中的方法
  11. Eclipse下搭建Android的NDK开发环境
  12. 如何在 Mac 上的“照片”应用中创建智能相册?
  13. 网络安全渗透实战详细详解
  14. 嵌入式系统与物联网的关系
  15. 知识图谱:【图数据库Nebula(一)】——Nebula简介
  16. 启动VMware虚拟机显示:物理内存不足无法使用
  17. 9种常见的INTERNET接入方式
  18. CSS 列表样式(ul)
  19. spark ui job和stage的dag图查看过去运行的任务,查不到,分析源码解决问题
  20. 菜孔孔学python--列表

热门文章

  1. python pip升级问题之使用代理端口
  2. stream流常用方法_Java8 中用法优雅的 Stream,怪不得我之前总是看不懂别人写的代码!...
  3. python代码转换为pytorch_python基础教程Pytorch之Tensor和Numpy之间的转换的实现方法...
  4. 算法导论 练习14.1-7
  5. 数据结构实验 6.宗教信仰
  6. ~~分解质因数法求组合数
  7. 1010 一元多项式求导(C语言)
  8. 《南溪的目标检测学习笔记》——特征归一化(meadstd)
  9. 自动驾驶——目标检测(Camera传感器)的学习笔记
  10. Jupyter Lab——使用tqdm.notebook.tqdm时没有出现进度条,提示“HBox(children=(FloatProgress……”