TMUX 简易使用方法

TMUX 简易使用方法

主要参考:

阮一峰 Tmux 使用教程:https://www.ruanyifeng.com/blog/2019/10/tmux.html

Tmux使用手册:http://louiszhai.github.io/2017/09/30/tmux/#查看所有的会话

**基本概念:**输入tmux命令就相当于开启了一个服务器,此时默认将新建一个会话,然后会话中默认新建一个窗口,窗口中默认新建一个面板。tmux会话、窗口、面板之间的联系如下:

  • 一个tmux session(会话)可以包含多个window(窗口),窗口默认充满会话界面,因此这些窗口中可以运行相关性不大的任务。

  • 一个window又可以包含多个pane(面板),窗口下的面板,都处于同一界面下,这些面板适合运行相关性高的任务,以便同时观察到它们的运行情况。

0. tmux 安装


ROOT 用户安装:

1
2
3
4
5
6
7
8
# Ubuntu 或 Debian
$ sudo apt-get install tmux

# CentOS 或 Fedora
$ sudo yum install tmux

# Mac
$ brew install tmux

非ROOT 用户安装:

非root用户安装tmux参考以下链接:

知乎:非root用户安装tmux

如果使用wget产生类似无法解析github.com的错误信息可以利用链接进入GitHub仓库下载后传入安装位置。

1. 基本用法


最简单也是最常用的tmux使用流程是:新建会话、在新建的会话中运行程序、分离会话、下次使用接入会话

创建会话

  1. 使用tmux快速创建会话
1
$ tmux
  1. 指定创建会话的名称
1
$ tmux new -s test-1

上面表示创建一个名为test的会话。会话创建完后会在当前窗口的下方出现一个小绿条,类似这种:

image-20220218101122309

小绿条左边显示会话名称test-1、窗格(pane)序号0以及窗口名称bash(窗格和窗口的简单操作后面会提到)。小绿条右边则显示会话的创建时间及其他一些信息。

运行程序

在刚才创建好的会话中键入自己想运行的程序指令,然后该指令便会一直在后台运行并不会随着SSH连接的断开而停止运行。例如在刚才的会话中运行train.py

1
$ python train.py

就像正常的SSH连接一样程序开始运行。

会话分离

经过上面的操作程序已经正常运行起来了,接下来我们可以用detach将这个会话与SSH窗口分离开,让它自己在后台运行。

具体操作如下:

1
$ tmux detach

然后小绿条消失,会话窗口恢复到SSH连接窗口。

可能在运行程序之后,你的程序会一直打印输出导致你无法输入上述指令这时可以利用先按一次Ctrl+b松开后再按d快捷键分离会话。

会话接入

一个小时之后我们想看看自己的程序跑得怎么样了,这时使用attach便能接入会话查看训练过程。具体指令如下:

1
2
# 接入之前 test 会话
$ tmux attach -t test

退出会话

会话分离操作只是将任务放置后台托管并没有断开连接,如果想在程序运行完之后断开连接退出会话则需要使用快捷键Ctrl+d或者键入exit

1
$ exit

2. 其他操作

会话操作

  • 创建会话
1
$ tmux new -s <session-name>
  • 查看会话
1
2
3
4
5
# ctrl+b + s 分开按
# or
$ tmux ls
# or
$ tmux list-session
  • 分离会话
1
2
3
# ctrl+b + d 分开按
# or
$ tmux detach
  • 接入会话
1
$ tmux attach -t <session-name>
  • 杀死(退出)会话
1
2
3
# Ctrl+d
# or
$ tmux kill-session -t <session-name>
  • 切换会话
1
$ tmux switch -t <session-name>
  • 重命名会话
1
$ tmux rename-session -t <old-name> <new-name>

窗格操作

  • 划分窗格
1
2
3
4
5
6
7
8
9
10
# 划分为上下两个窗格
# ctrl+b + " 分开按
# or
$ tmux split-window


# 划分为左右两个窗格
# ctrl+b + % 分开按
# or
$ tmux split-window -h
  • 移动光标
1
2
3
4
5
6
7
8
9
10
11
# 光标切换到上方窗格
$ tmux select-pane -U

# 光标切换到下方窗格
$ tmux select-pane -D

# 光标切换到左边窗格
$ tmux select-pane -L

# 光标切换到右边窗格
$ tmux select-pane -R

除了使用上面的显示指令外也可以通过ctrl+b键盘上下左右方向键来移动光标

  • 交换窗格位置
1
2
3
4
5
# 当前窗格上移
$ tmux swap-pane -U

# 当前窗格下移
$ tmux swap-pane -D

貌似无法支持窗格左右移动?

  • 查看窗格
1
$ tmux list-pane
  • 移除窗格
1
2
3
4
5
# 移除当前光标所在窗格
# ctrl+b + x 分开按

# 移除指定序号0的窗格
$ tmux kill-pane -t 0

窗口操作

  • 创建窗口
1
2
3
4
$ tmux new-window

# 新建一个指定名称的窗口
$ tmux new-window -n <window-name>
  • 重命名窗口
1
2
3
4
# 给当前窗口重名命
$ tmux rename-window <new-name>

$ tmux rename-window -t <old-name> <new-name>
  • 查看窗口
1
$ tmux list-window
  • 切换窗口
1
2
3
4
5
# 切换到指定编号的窗口
$ tmux select-window -t <window-number>

# 切换到指定名称的窗口
$ tmux select-window -t <window-name>
  • 关闭窗口
1
2
# 移除指定的窗口
$ tmux kill-window -t <name>

END