tmux系列:2、tmux会话

2023-10-30

tmux系列:2、tmux会话


1. 前言

其实最开始时候我用tmux是不管这个会话的,但是熟悉了之后我发现这个非常方便,特别是当你有云服务器开发一些云服务的时候,你在公司登录服务器开发一些内容做调试时可以将这些进程的调试过程保存在一个会话中,然后分离终端和会话,这个时候tmux服务会将这个会话运行在后台,当你回家之后或者第二天继续处理对应进程时直接重新附加到这个会话就可以了,之前打开调试的进程都还是在的,不会由于你在某个位置断开了终端这些调试任务就中止了。简单来讲,就是可以将你对服务器的程序和操作终端分离,程序的运行不随着操作终端的退出而退出,这些程序仍然被tmux的服务管理在后台,这个时候tmux就像一个管家,你退出终端之后交待一些事给管家让管家继续看护着,这些事就不会因为没人管而终止掉,而由管家暂时帮你照看,等你回来后可以在管家这里接手继续处理(当然,这个前提是你没有关闭服务器,只是退出了远程连接服务器的终端)。

2. 创建会话

创建会话就相当于要给一系列事情给个名称,比如说你现在调试某个进程的时候需要一边看日志,一边分析进程内存、cpu占用,还需要看下另一个相关进程是否和该进程通信成功,这个调试过程我们可以创建一个统一的会话来管理这几个相关的程序,并给这个会话起个名字,比如叫“debug”。

要创建第一个tmux会话,需要从shell运行tmux。使用new-session命令创建一个新的会话,简写为new:

$ tmux new

如果没有参数,new-session将创建一个新会话并附加它。因为这是第一次会话,tmux服务器将被启动,从shell运行的tmux将成为第一个客户机并附加到它。

新会话将有一个窗口(索引为0),其中有一个包含shell的窗格。shell提示符应该出现在终端的顶部,绿色状态线出现在底部(状态线的更多内容在下面)。

默认情况下,第一个会话将被称为0,第二个会话称为1,依此类推。new-session允许使用-s标志为会话指定一个名称:

$ tmux new -s mysession

这将创建一个名为mysession的新会话。一个命令可以通过传递额外的参数来代替运行shell。如果给出了一个参数,tmux将把它传递给shell,如果有多个参数,则直接运行该命令。例如,这些运行vim(1):

$ tmux new 'vim ~/.tmux.conf'

或者:

$ tmux new -- vim ~/.tmux.conf

默认情况下,tmux调用会话中运行的第一个窗口。-n标志给出了一个名称来代替使用,在这种情况下,一个窗口mytopwindow运行top(1):

$ tmux new -n mytopwindow top

new-session有其他的标志-下面有一些。完整的列表在tmux手册中。

3. 状态栏

当附加tmux客户机时,它会在屏幕的底部显示一个状态行。默认情况下这是绿色的,显示:

  • 在左侧,附加会话的名称:[0]。
  • 在中间,会话中的窗口列表及其索引,例如索引0:0:ksh处的一个窗口称为ksh
  • 在右边,加引号的窗格标题(默认为运行tmux的主机的名称)以及时间和日期。

在这里插入图片描述

当新窗口打开时,窗口列表会增长——如果有太多的窗口无法适应终端的宽度,一个<>将在左边或右边或两者都添加,以显示有隐藏的窗口。

在窗口列表中,当前窗口在名称后用*标记,最后一个窗口用-标记。

4. 命令和标志

Tmux有大量的命令。它们都有一个像new-windownew-sessionlist-keys这样的名称,许多还有一个更短的别名,如newwnewlsk

每当使用键绑定时,它都会运行一个或多个tmux命令。例如,C-b c执行new-window命令。

也可以从shell中使用命令,就像上面的new-sessionlist-keys一样。

与标准Unix命令一样,每个命令都有0个或多个标志。标志本身可以也可以不接受单个参数。另外,命令可以在标记后附加参数。标志在命令之后传递,例如运行带有标志-d-nnew-session命令(别名new):

$ tmux new-session -d -nmysession

所有命令及其标志都记录在tmux手册页中。

本文档主要关注可用的键绑定,但是命令是为了提供信息或者有一个有用标志的地方而提到的。它们可以从shell或命令提示符中输入,将在下一节中进行描述。

5. 命令提示符

Tmux有一个交互式命令提示符。这可以按C-b:打开,并显示而不是状态行,如图所示:

在这里插入图片描述

在提示符中,可以像在shell中一样输入命令。输出将在状态行中短暂显示一段时间,或者将活动窗格切换到视图模式。

默认情况下,命令提示符使用类似于emacs(1)的键;但是,如果VISUAL或EDITOR环境变量被设置为包含vi(例如vi或vim或nvi)的内容,那么将使用vi(1)风格的键。

在命令提示符下可以同时输入多个命令,以冒号(;)分隔。这称为命令序列。

6. 附加和分离

与tmux分离意味着客户端退出并与外部终端分离,返回到shell,让tmux会话及其内部的任何程序在后台运行。为了将tmux分离,需要使用C-b d键绑定。当tmux分离时,它将打印一条带有会话名称的消息:

[detached (from session mysession)]

attach-session命令用来附加一个已经存在的会话。没有参数,它将附加到最近使用的没有附加的会话:

$ tmux attach

或者-t给出要连接到的会话的名称:

$ tmux attach -tmysession

默认情况下,附加到一个会话不会分离任何附加到同一会话的其他客户端。-d标志是这样做的:

$ tmux attach -dtmysession

new-session命令有一个-A标志,如果现有会话存在,则附加到它;如果不存在,则创建一个新的会话。对于一个名为myssession的会话:

$ tmux new -Asmysession

添加-D标志可以使new-session的行为类似于带有-dattach-session,并分离任何附加到会话的其他客户端。

7. 会话清单

list-session命令(alias ls)显示可以附加的可用会话列表。这显示了4个会话,分别是12myothersessionmyssession:

$ tmux ls
1: 3 windows (created Sat Feb 22 11:44:51 2020)
2: 1 windows (created Sat Feb 22 11:44:51 2020)
myothersession: 2 windows (created Sat Feb 22 11:44:51 2020)
mysession: 1 windows (created Sat Feb 22 11:44:51 2020)

8. 完全杀死tmux

如果tmux内部没有会话、窗口或窗格,服务器将退出。也可以使用kill-server命令完全杀死它。例如,在命令提示符下:

:kill-server

9. 总结一下

  • 创建会话:tmux new -s xxx
  • 分离会话和终端:C-b d
  • 附加到会话:tmux attach或者tmux attach -d xxx
  • 命令提示符进入交互模式:C-b :
  • 列出所有会话:C-b ls
  • 杀死tmux服务直接退出:C-b :进入交互模式后kill-server
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tmux系列:2、tmux会话 的相关文章

随机推荐

  • 抖音广告落地页怎么制作?四个原则为您详细介绍

    抖音广告落地页怎么制作 抖音作为著名的短视频社交平台 活跃用户数据庞大 消费市场广阔 已经成为了品牌商重要的产品网络推广平台 抖音信息流广告亦是成为各大品牌商的热门选择 那么一个引人入胜的抖音广告落地页该如何制作呢 1 辨识原则 利用品牌方
  • STM32H7实现8通道ADC采集(软件触发+DMA传输)

    使用CubeMX工具 对DMA进行配置 CubeMX工程下载 dma相关的配置比较简单 主要是adc配置相关的修改 数据要设置成DMA循环模式ADC CONVERSIONDATA DMA CIRCULAR 溢出操作要设置为覆盖ADC OVR
  • auto-1 - 自动化之windows powershell与python

    在powershell中实现功能 mkvenv指令在该目录下创建并进入虚拟环境 如果目录中有requirements txt自动安装 venv进入该目录下的虚拟环境 默认虚拟环境文件夹名称是venv pi
  • 解决:ModuleNotFoundError: No module named ‘gym‘

    从没安装过gym 出现 ModuleNotFoundError No module named gym 这种错误 可以使用命令如下进行安装 pip install i https pypi tuna tsinghua edu cn simp
  • 学习笔记(28):R语言入门基础-矩阵的编辑——合并矩阵

    立即学习 https edu csdn net course play 24913 285695 utm source blogtoedu 矩阵的合并 按行合并 rbind 按列合并 cbind
  • 旅游管理系统-JAVA【数据库设计、源码、开题报告】

    摘 要 21世纪是一个知识大爆炸的时代 互联网拉近了人们的距离 信息化革命席卷了各个行业 物质生活水平的提高使得人们的消费观念悄然发生改变 人们对户外旅行的要求越来越高 这对于传统旅游行业来说既是机遇也是挑战 提高旅游行业管理水平 推进旅游
  • 转载:开源mes系统_基于SpringBoot 开源框架,设计MES系统源码分享(代码标准规范)

    Hutool 是一个小而全的Java工具类库 通过静态方法封装 降低相关API的学习成本 提高工作效率 使Java拥有函数式语言般的优雅 让Java语言也可以 甜甜的 请求参数每张表的分页查询参数 严格按照一张表对应一个请求参数对象进行开发
  • NTSC、PAL、SECAM彩色电视制式

    NTSC PAL和SECAM是世界上最主要的三大电视制式 并且这三种制式间不能兼容 例如PAL的视频不能在NTSC制式的电视上播放 下图是三种制式在世界上的使用分布图 NTSC制式 NTSC制式 简称N制 是1952年12月由美国国家电视标
  • 老公老婆

    1 老公 你要努力挣钱 钱这个东西 不能少得来让我们整日为生计发愁 最好也不能多得来需要别的女人帮着花 2 请给我关爱 信任 尊重和自由 3 你要加强锻炼 强健身体 好在我们共同返家的夜晚 一口气抱我上到五楼的家门 我渴望每天都能做你的新娘
  • 21天Python进阶学习挑战赛

    21天Python进阶学习挑战赛活动详情 1 活动介绍 2 作者介绍 3 专栏介绍 4 学习计划 1 活动介绍 CSDN与每一位学习者同行 平台优质专栏作者带队精准学习 精选高质量专栏学习资料活动期内限时免费学习 此刻开启学习打卡之路 收获
  • LETTERS

    http poj org problem id 1154 Description A single player game is played on a rectangular board divided in R rows and C c
  • 大数据从0到1的完美落地之sqoop命令执行

    Sqoop命令执行 常见命令执行参数 通过Sqoop加不同参数可以执行导入导出 通过sqoop help 可以查看常见的命令行 常见Sqoop参数 root qianfeng01 sqoop 1 4 7 sqoop help codegen
  • 前端面试 - 项目流程

    目录 1 项目流程 2 项目角色 3 完整项目流程 4 项目沟通 5 PM想在开发过程中增加需求 该怎么办 6 项目即将延期了 该怎么办 7 你将如何保证项目质量 1 项目流程 1 项目分多人 多角色参与 2 项目分多阶段 3 项目需要计划
  • commons-pool2源码走读(四) 对象池实现GenericObjectPool

    commons pool2源码走读 四 对象池实现GenericObjectPool
  • Springboot实现短信验证登陆

    1 导入依赖
  • 商品评论表设计

    总共5张表 设计如下 create sequence SEQ TRADESCORE AUTOINC minvalue 1 maxvalue 9999999999999 start with 1 increment by 1 nocache
  • ListView获取当前最顶部的item

    ListView获取当前最顶部的item 1 private void setupContactsListView 2 lst addessbook setOnScrollListener new OnScrollListener 3 Ov
  • Python手册(Scientific Computing)--SymPy

    SymPy Symbol Python的简称 是一个用于符号数学的Python库 它旨在成为一个功能齐全的计算机代数系统 CAS 同时保持代码尽可能简单 以便易于理解和易于扩展 SymPy完全用Python编写 不依赖于外部库 Introd
  • PowerDesigner 模型类型介绍

    目录 PowerDesigner 提供了两种方式组织模型 分别是Categories和Model types 1 Categories方式是从企业架构建模角度出发 主要包含业务层 信息层 应用层 技术层 需求与规划层 1 1 业务层主要用于
  • tmux系列:2、tmux会话

    tmux系列 2 tmux会话 文章目录 tmux系列 2 tmux会话 1 前言 2 创建会话 3 状态栏 4 命令和标志 5 命令提示符 6 附加和分离 7 会话清单 8 完全杀死tmux 9 总结一下 1 前言 其实最开始时候我用tm