背景:最近在重新学习Linux,看到了一款生产力工具tmux,也大部分是命令操作或组合键操作,我感觉命令行的命令太多了,真心记不住了,本篇算是一个记录,留作日后查看。
1. tmux到底是啥,解决了什么问题
tmux是一个终端复用器,是terminal multiplexer的缩写,解决了一边看top,另外一边看代码解决问题等,主要是针对 session和window的管理来实现复用,整体有点类似 io中的 "多路复用" epoll 和 通信中的“频分复用”,都是通过某一个东西控制多个物体。
2. 概念
tmux里面有三个概念,分别是 session(会话)、window(窗口)、pane(窗格或面板)。
首先在session和window,是一对多关系,也就是说一个会话可以有多个窗口,但至少会有一个窗口, 通过组合键进行 窗口间切换
最后说 window和panel,是 一对多的关系,也就是说一个窗口可以有多个窗格,但至少有一个窗格。
总体来说,一个session可以有m个window,同时一个window又可以有n个pane,所以一个session可以等于 m x n 个 pane,你可以在这么多pane里面输入指令。
3. 前缀键
ctrl+b 注意是ctrl 和 b键需要同时按,然后同时放开,再根据需求选择相关的键。
例如:你要新建一个 window, ctrl+b 然后按 c 即可
4. 使用和应用场景
客户端: Linux或Windows
服务器: Linux
如果你想通过在服务器Linux上执行多个任务,即使网络掉线等也不会中断执行。
在客户端上执行ssh登陆:
> ssh root@xxx.xxx.xxx.xxx
登陆成功后需要在服务器上安装tmux,后需一切操作在服务器上完成
# apt install tmux 或 # yum install tmux
此时我完成了一系列的准备工作,下面就可以阐述一下如何使用tmux。
4.1 对window窗口和pane窗格的操作
# tmux // 进入了tmux,并默认创建了一个session和window,默认为 0 号
Ctrl+b c // 即可创建一个新窗口1号且默认与上面新建的session关联,并切换到这个新窗口1中,create
Ctrl+b p // 切换到上一个窗口,previous
Ctrl+b n // 切换到下一个窗口, next
Ctrl+b num // 切换到num号窗口,其中num为窗口编号
Ctrl+b % // 将一个窗口或pane垂直切分为两个pane
Ctrl+b " // 将一个窗口或pane水平切分为两个pane
Ctrl+b 上下左右键 // 在当前这个窗口中的 各个pane进行切换
Ctrl+b Ctrl+上下左右键 // 改变当前这个pane的显示大小
Ctrl+b z // 将当前的pane最大化,或将pane最大化切换回原来大小
Ctrl+b x // 关闭当前光标所在的那个pane
Ctrl+b , // 将窗口重命名,重要
Ctrl+b q // 显示窗格的编号
Ctrl+b ! // 将当前的窗格独立为一个窗口
4.2 对session会话的操作
session的增删改查
在原始的命令行中,即 底部没有tmux状态栏的命令行:
# tmux // 将会创建一个 数字 的 session
# tmux new -s sessionName // 将会创建一个 文字式的 session
注意:创建session需要在原始命令行中进行创建,不能在某个session的某个窗口中进行新建session,会提示错误
# tmux ls // 查看当前所有的session, 可以在tmux中运行
# tmux rename-session -t num newSessionName // 重命名某个session,可以在tmux中运行
其中 num代表的是session号,newSessionName是更改后的session名称
Ctrl+b $ // 也是重命名当前的session
Ctrl+b d // 将当前的session与各个window分离,退回到原始的命令行中
# tmux attach -t 0 // 将与 session 0 进行连接,仅能在原始命令行运行
# tmux kill-session -t num // 将session num的session进行删除操作
# tmux switch -t num // 将当前session切换到 session num这个session中,可以在tmux中运行
Ctrl+b s // 这个命令用于选择各个session,非常棒的视图可以看到
Ctrl+b w // 这个命令用于选择各个session各个窗口各个窗格,非常棒的视图可以看到
注意:我用tmux的时候犯了一个错误,这个错误是:我的客户端也是一个Linux,直接打开终端并输入tmux然后进行ssh连接远程服务器,当进行Ctrl+b c后发现还是本地的客户端,而不是远程主机的另外一个窗口。 正确的方法是 先进行登陆远程服务器,在服务器上安装tmux,然后再进行一些列操作。