~ 凉风有信,风月无边 ~
前言
tmux是Terminal Multiplexer的开源终端复用工具,支持多会话、窗口和面板操作。它让你高效管理一个窗口中的多个终端,且终端不会因关闭窗口或断开SSH而丢失。
举一个简单的例子,例如,我启动了一个flask应用,这里是可以直接访问的
如果我关闭这个ssh连接,那么就会导致这个flask应用直接垮掉
关闭之后,这个flask应用就访问不了了
那么此时我们就需要用到终端复用技术,当然也可以直接使用docker,这里只是为了演示
tmux概述
定义与功能
tmux是一个开源的终端复用器,允许用户在一个终端窗口中运行多个会话(session)、窗口(window)和面板(pane),提高终端工作的效率。
主要优势
会话保持、多任务处理、高度自定义。
背景
tmux的前身是screen,但提供了更现代的界面和更多的自定义选项,成为Unix/Linux用户的首选。
tmux的基本概念
会话(Session)
工作空间的集合,包含多个窗口,持久存在,即使断开SSH或终端仍保持运行。这就很完美的解决了刚才flask应用那个问题。
窗口(Window)
每个会话可以有多个窗口,每个窗口看作一个独立的终端,运行不同的命令或程序。
面板(Pane)
窗口可以分割成多个面板,同时运行和查看多个任务,面板分割可以水平或垂直进行。
安装tmux
Ubuntu/Debian使用
sudo apt install tmux
CentOS
sudo yum install tmux
tmux常用命令详解
会话管理
启动会话
tmux
命名并启动会话
tmux new -s mysession
比如我创建一个flask应用,需要单独执行一个命令,并保持他ssh断开不会自动终止命令执行
会话名称
启动flask应用
关闭我们的终端,断开ssh连接,并访问网页,可以看到正常访问
列出会话
tmux ls
可以看到刚刚运行flask-app窗口还在
重新连接会话
tmux attach -t mysession
可以看到这个flask应用还在运行
分离会话
Ctrl + b 后按 d
杀死会话
tmux kill-session -t mysession
窗口管理
新建窗口
Ctrl + b 后按 c
切换窗口
Ctrl + b 后按 n 或 p
重命名窗口
Ctrl + b 后按 ,
面板管理
水平分割面板
Ctrl + b 后按 "
垂直分割面板
Ctrl + b 后按 %
切换面板
Ctrl + b 后按方向键
调整面板大小
Ctrl + b 后按住 Ctrl 再按方向键
关闭面板(Ctrl + d
或exit
)。
复制和粘贴
进入复制模式
Ctrl + b
后按[
,使用箭头键移动光标。
选择文本
移动光标到复制起点,按空格键开始选择,到复制结尾按回车完成。
粘贴文本
Ctrl + b
后按]
。
鼠标支持
通过配置文件~/.tmux.conf
开启鼠标模式,使复制操作更直观。
配置与自定义
创建配置文件
touch ~/.tmux.conf
后使用编辑器(如nano)打开。
添加配置
如开启鼠标模式(set-g mouse on
)、使用鼠标选择窗口(bind-n MouseDown2Pane choose-window
)。
应用配置
在tmux窗口中,Ctrl + b
后按:
进入命令模式,输入source-file ~/.tmux.conf
后按回车。
tmux实际应用场景
远程管理服务器
保存会话,避免网络断开导致工作中断,同时运行多个任务。
多任务开发与调试
分割多个面板,一边运行应用程序,一边查看日志,同时进行调试。
自动化任务管理
与脚本结合,自动化常见任务,预设多个任务并自动启动一系列窗口和面板。
总结
tmux是一个功能强大的终端复用器,通过会话、窗口和面板的层级结构管理多个终端会话和任务,提供了丰富的快捷键和自定义选项,适用于远程操作、开发和多任务处理场景,能够显著提高终端工作的效率和便捷性。
往期推荐
原文始发于微信公众号(泷羽Sec):面试官:什么是终端复用技术(tmux)?
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论