Tmux使用介绍

news/2024/11/16 6:28:23/文章来源:https://www.cnblogs.com/INnoVationv2/p/18391259

Tmux使用介绍

Tmux是一个终端复用器(terminal multiplexer)。如果您有使用screen的经历的话,您可以理解为Tmux是screen的不同实现软件。本教程将讲解Tmux的基础用法。

会话与进程

命令行的典型用法是打开终端(terminal)后,在里面输入指令。用户的这种与计算机交互的手段,称为会话(session)。

在会话中,通过命令行启动的所有进程均与会话进程绑定。当会话进程终止时,该会话启动的所有进程也会随之强行结束。

一点最常见的例子就是通过SSH连接到远程计算机。当SSH连接因为网络等原因断开时,那么SSH会话就被终止,这次会话启动的任务也会被强制结束。

为了解决这个问题,一种手段就是用户终端窗口与会话“解绑”。即关闭用户端窗口,仍然维持该会话,进而保证用户进程不变。

Tmux的作用

Tmux就是这样一款会话与窗口的“解绑”工具。

(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。(2)它可以让新窗口"接入"已经存在的会话。(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。(4)它还支持窗口任意的垂直和水平拆分

基本用法

安装

集群中已经默认安装了Tmux,无须操作。如果您需要在自己的服务器上安装Tmux,请参考以下指令:

# Ubuntu 或 Debian
$ sudo apt-get install tmux# CentOS 或 Fedora
$ sudo yum install tmux# Mac
$ brew install tmux

启动与退出

直接在终端中键入tmux指令,即可进入Tmux窗口。

$ tmux

上面命令会启动 Tmux 窗口,底部有一个状态栏。状态栏的左侧是窗口信息(编号和名称),右侧是系统信息。

../_images/tmux_1.png

按下Ctrl+d或者显式输入exit命令,就可以退出 Tmux 窗口。

$ exit

快捷键

Tmux有大量的快捷键。所有的快捷键都要使用Ctrl+b作为前缀唤醒。我们将会在后续章节中讲解快捷键的具体使用。

会话管理

新建会话

第一个启动的会话名为0,之后是12一次类推。

但是有时候我们希望为会话起名以方便区分。

$ tmux new -s SESSION_NAME

以上指令启动了一个名为SESSION_NAME的会话。

分离会话

如果我们想离开会话,但又不想关闭会话,有两种方式。按下Ctrl+b d或者tmux detach指令,将会分离会话与窗口

$ tmux detach

后面一种方法要求当前会话无正在运行的进程,即保证终端可操作。我们更推荐使用前者。

查看会话

要查看当前已有会话,使用tmux ls指令。

$ tmux ls

接入会话

tmux attach命令用于重新接入某个已存在的会话。

# 使用会话编号
$ tmux attach -t 0# 使用会话名称
$ tmux attach -t SESSION_NAME

杀死会话

tmux kill-session命令用于杀死某个会话。

# 使用会话编号
$ tmux kill-session -t 0# 使用会话名称
$ tmux kill-session -t SESSION_NAME

切换会话

tmux switch命令用于切换会话。

# 使用会话编号
$ tmux switch -t 0# 使用会话名称
$ tmux switch -t SESSION_NAME

Ctrl+b s可以快捷地查看并切换会话

重命名会话

tmux rename-session命令用于重命名会话。

# 将0号会话重命名为SESSION_NAME
$ tmux rename-session -t 0 SESSION_NAME

对应快捷键为Ctrl+b $

窗格(window)操作

Tmux可以将窗口分成多个窗格(window),每个窗格运行不同的命令。以下命令都是在Tmux窗口中执行。

划分窗格

tmux split-window命令用来划分窗格。

# 划分上下两个窗格
$ tmux split-window# 划分左右两个窗格
$ tmux split-window -h

../_images/tmux_2.png

对应快捷键为Ctrl+b "Ctrl+b %

移动光标

tmux select-pane命令用来移动光标位置。

# 光标切换到上方窗格
$ tmux select-pane -U# 光标切换到下方窗格
$ tmux select-pane -D# 光标切换到左边窗格
$ tmux select-pane -L# 光标切换到右边窗格
$ tmux select-pane -R

对应快捷键为Ctrl+b ↑Ctrl+b ↓Ctrl+b ←Ctrl+b →

窗格快捷键

$ Ctrl+b %:划分左右两个窗格。
$ Ctrl+b ":划分上下两个窗格。
$ Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。
$ Ctrl+b ;:光标切换到上一个窗格。
$ Ctrl+b o:光标切换到下一个窗格。
$ Ctrl+b {:当前窗格左移。
$ Ctrl+b }:当前窗格右移。
$ Ctrl+b Ctrl+o:当前窗格上移。
$ Ctrl+b Alt+o:当前窗格下移。
$ Ctrl+b x:关闭当前窗格。
$ Ctrl+b !:将当前窗格拆分为一个独立窗口。
$ Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
$ Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。
$ Ctrl+b q:显示窗格编号。

原文地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/790540.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lecture 04 Rendering on Game Engine

Lecture 04 Rendering on Game Engine Challenges on Game Rendering成千上万不同类型的物体 在现代计算机上跑(CPU、GPU的复杂结合) 稳定帧率帧率 分辨率限制CPU带宽和内存渲染只占20%左右,剩下留给Game logic、网络、动画、物理和AI系统等等Outline of RenderingBasics of…

样式及结构复用

本文来自博客园,作者:jialiangzai,转载请注明原文链接:https://www.cnblogs.com/zsnhweb/p/18391257

Lecture 02 Layered Architecture of Game Engine

Lecture 02 Layered Architecture of Game Engine 渲染只是游戏引擎中不大的一部分Tool Layer 工具层 这部分不是实时的,所有可以允许多种实现方法(C++/C#开发等等)DCC Digital Content Creation 将不同文件导入成AssetsFunction Layer 功能层每个tick依次做完所有内容 多线…

Lecture 03 How to build a Game World

Lecture 03 How to build a Game World Everything is a Game Object (GO)面向对象的方式 有些GO之间并没有清晰的继承关系Unreal中的UObject、Unity中的Object并不是这里讲的GameObject概念,而是更类似如C#中的Object,用于确定任何对象的生命周期需要的句柄 Unreal中的Game…

Lecture 13 Real-time Ray Tracing 2

Lecture 13 Real-Time Ray Tracing 2 Implementing a spatial filter 这里想做的是低通滤波移除高频信号会不会丢失高频中的信息? 噪声不一定只在高频中集中在频域 这些filtering可以应用在PCSS、SSR上的降噪用$$\widetilde C$$表示有noise的图像 \[K$$表示滤波核kernel,比如…

Lecture 10 11 Real-time Physically-based Materials (surface model)

Lecture 10 Real-time Physically-based Materials (surface models and cont.) PBR and PBR MaterialsPhysically-Based Rendering (PBR) 基于物理的渲染渲染内的任何事都应该是PBR的材质、光照、相机、光线传播等等不限于材质,但常常指材质PBR materials in RTR实时渲染中材…

[笔记]Tarjan

Tarjan求强连通分量 定义 DFS树相关 我们对一个有向联通图进行DFS遍历,会得到一棵DFS树。 DFS树的形态是根据我们DFS的顺序来决定的,因此对一个有向联通图来说,它的DFS树可能有多个。我们把这棵树的边称作树边。 其他边我们分为\(3\)类:前向边:从\(u\)到它dfs树上的祖先的…

Lecture 12 Real-time Ray Tracing

Lecture 12 Real-Time Ray Tracing Basic ideasample per pixel PPS 1 SPP path tracing = $$\downarrow$$camera出发打到求出第一个交点(像素上看到的点),这一步是primary ray(工业上实际用rasterization)工业上这一步有一个技巧 将这一步改为光栅化 因为每个像素都要从c…

gcc/g++编译ZR

编译工具链我们写程序的时候用的都是集成开发环境 (IDE: Integrated Development Environment),集成开发环境可以极大地方便我们程序员编写程序,但是配置起来也相对麻烦。在 Linux 环境下,我们用的是编译工具链,又叫软件开发工具包(SDK:Software Development Kit)。Linux 环…

一种优雅的方式整合限流、幂等、防盗刷

大家在工作中肯定遇到过接口被人狂刷的经历,就算没有经历过,在接口开发的过程中,我们也需要对那些容易被刷的接口或者和会消耗公司金钱相关的接口增加防盗刷功能。例如,发送短信接口以及发送邮件等接口,我看了国内很多产品的短信登录接口,基本上都是做了防盗刷,如果不做…

Lecture 06 Real-time Environment Mapping (Precomputed Radiance Transfer)

Lecture 06 Real-time Environment Mapping (Precomputed Radiance Transfer) Shadow from environment lighting通常情况下要实时渲染非常困难 在不同观察方向上As a many-light problem: Cost of Shadow Map is linearly to #light As a sampling problem: Visibility项V会变…

Lecture 07 Real-time Global Illumination (in 3D)

Lecture 07 Real-time Global Illumination (in 3D) 实时渲染中全局光照一般只bounce两次(直接光照bounce一次,间接光照bounce两次)primary light source 真正的光源secondary light source 次级光源: 一切被直接光照照到的物体都会继续将自己作为光源想要用间接光照照亮\(…