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

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 会话。

0 会话

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

例如您可以在这个会话中,输入 python 命令,进入 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

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

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

tmux ls

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 进入指定的会话
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值