Tmux入门指南

前言

很多时候我们需要通过SSH连接服务器进行一些操作,费了好长时间调好了程序,一顿饭的功夫SSH超时了(broken pipe),重新连上去正在运行的程序也都没了,一切又得从头再来。这个时候你就非常需要用到tmux了,用tmux在服务器上创建一个会话(Session),在该会话中进行操作,你可以随时随地断开和重新连接会话(Session),即便是SSH中断了你在远程服务器上的工作状态也可以持久化地保存。

简介

tmux 是一个优秀的终端复用器类自由软件,功能类似 GNU Screen,但使用 BSD 许可发布。用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个任务时非常方便。

功能特性:

  • 一个虚拟终端可以管理多个会话,窗口和面板
  • 支持分屏,同时处理多个操作
  • 窗口、面板可以在会话间自由移动,切换
  • 丰富灵活的状态行展示
  • 支持自定义快捷键,依照个人习惯配置令操作更高效
  • 不受断网影响,避免丢失重要工作进度
  • 结对编程,方便演示与协作
  • 自带复制粘贴缓冲区管理
  • 脚本化配置,可配置多种操作环境层次结构

tmux的主要元素分为三层:

  • Session 一组窗口的集合,通常用来概括同一个任务。session可以有自己的名字便于任务之间的切换。
  • Window 单个可见窗口。Windows有自己的编号,也可以认为和ITerm2中的Tab类似。
  • Pane 窗格,被划分成小块的窗口,类似于Vim中 C-w +v 后的效果。

安装tmux

Linux安装

sudo apt-get install tmux

Mac OS安装

brew install tmux

基本操作

首先在tmux会话中使用的快捷键都需要一个前缀来激活,前缀默认为Ctrl+b(即:在按快捷键之前需要按一下前缀)。

查询所有会话(Session)

在命令行输入下列命令查询当前所有会话。

tmux ls

你会发现no server running on /private/tmp/tmux-501/default,这是因为我们还没有创建会话(Session)。

创建会话(Session)

tmux new -s session-name

通过上述命令新建一个有特定名称的会话。 一般情况下我们不会使用下列命令创建不指定名字的会话。

tmux new

断开会话(Session)

使用下列命令断开当前会话(断开会话并不影响会话中运行的程序,断开后还可以重新连接)

tmux new

或者使用tmux中的快捷键

Ctrl+b d(即先使用Ctrl+b快捷键前缀,然后再按d)

重新连接会话(Session)

在命令行输入tmux a即可快速连接第一个所有会话中的第一个。

Ctrl+b d(即先使用Ctrl+b快捷键前缀,然后再按d)

或者通过会话名连接该一个会话

tmux a -t session-name

关闭会话

通过下列命令关闭会话后,会话中的程序也会全部关闭。

tmux kill-session -t session-name

当然你也可以通过直接按Ctrl+d关闭会话、窗口或窗格。

tmux中的快捷键参考

注意以下快捷键适用于tmux会话中,使用前皆需要按下快捷键前缀Ctrl+b

帮助

  • ? 获取帮助信息

会话(Session)管理

  • s 列出所有会话
  • $ 重命名当前的会话
  • d 断开当前的会话

窗口(Window)管理

  • c 创建一个新窗口
  • , 重命名当前窗口
  • w 列出所有窗口
  • % 水平分割窗口
  • “ 竖直分割窗口
  • n 选择下一个窗口
  • p 选择上一个窗口
  • 0~9 选择0~9对应的窗口

窗格(Pane)管理

  • % 创建一个水平窗格
  • “ 创建一个竖直窗格
  • q 显示窗格的编号
  • o 在窗格间切换
  • } 与下一个窗格交换位置
  • { 与上一个窗格交换位置
  • ! 在新窗口中显示当前窗格
  • x 关闭当前窗格

其他

  • t 在当前窗格显示时间

参考文章

  1. Tmux 入门介绍
  2. Tmux:Linux 从业者必备利器

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AhDung

【手记】让Fiddler抓取入站请求,或者叫用Fiddler做反向代理

最近在弄公众号开发,除了主动去调公众号接口,还存在公众号后台要反过来调你的情形,攻受转换一线间。对于回调的情况,想要知道对方是怎样来请求的很有必要。此前经常用F...

1983
来自专栏DannyHoo的专栏

错误——持续更新

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1651
来自专栏小古哥的博客园

gulp的安装和使用

安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务 1、去nodejs官网安装n...

2865
来自专栏编程

在 Vim 编辑器中开发 Python 应用的 Vim 插件

Python-mode 是一个 Vim 插件,它使你能够在 Vim 编辑器中更快的利用包括 pylint、rope、pydoc、pyflakes、pep8、au...

3098
来自专栏软件测试经验与教训

SoapUI测试WS接口实战

4469
来自专栏Java技术分享

基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理

在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能给系统用户更好的操作体验,也提高了用户录入数据的效率。我...

2507
来自专栏DeveWork

WordPress免插件仅代码实现文章归档(模板页面)I

许多博友喜欢为自己的博客建立一个文章归档页面。WordPress 可以用插件来实现,但我们一贯遵守可以不用插件则不用的准则,现在Jeff 就为大家带来免插件仅代...

2188
来自专栏君赏技术博客

第一次和你见面,我就深深的爱上你-Xcode Bot

最近研究起了 APP 的自动化测试,发现了 Xcode Bot自动化打包测试发布的功能,就开始研究起来。

1891
来自专栏张戈的专栏

SecureCRT全局发送相同命令,快速抓取服务器信息的方法

昨天,在新公司接到了第一个任务:统计所有服务器的几个信息。200 多台呢!一个台一台的去执行命令也太苦逼了吧?于是度了下,找到了这个方法,感觉很不错!现在来分享...

3627
来自专栏前端技术总结

详谈js防抖和节流

函数防抖是某一段时间内只执行一次;而函数节流是间隔时间执行,不管事件触发有多频繁,都会保证在规定时间内一定会执行一次真正的事件处理函数。

1.6K38

扫码关注云+社区

领取腾讯云代金券