tmux

一种终端复用工具,是终端中的窗口管理器。另一种用途是在关闭父shell时保持程序运行(常用于ssh访问断开连接后保持运行)。windows上借助cygwin也可以使用。[1]

基本操作

  1. 创建一个session

    tmux new -s myname

  2. 连接到运行中的session

    tmux a -t myname          # -t 通过名称,可以是名称前缀,如my; a 可以写成全称 attach
    tmux a 4 # 通过数字id
  3. 销毁session

    tmux kill-session -t myname

  4. 列出session

    tmux ls

进入tmux后操作panel和window的操作有:先按prefix(默认的配置是CTRL + b),释放后再按下边的:

Panes

 %                          vertical split
" horizontal split
d detach from session (it keeps running in the background)
x kill pane
Up/Down/Left/Right move between panes
: + resize-pane -D Resizes the current pane down
: + resize-pane -U Resizes the current pane upward
: + resize-pane -L Resizes the current pane left
: + resize-pane -R Resizes the current pane right
: + resize-pane -D 20 Resizes the current pane down by 20 cells

Windows

按键 功能
c 创建create window
w 列出windows
n next window
p previous window
& kill window
, 重命名rename window

翻页及内容搜索

prefix+ PgUp/PgDn 上下翻页, 此时进入scrollback mode, 可以按ctrl-S 进行内容搜索, 搜索到的多个内容按n/N调转到下一个/上一个匹配项(这与vim用法相同) .而 Ctrl-S 是 emacs bindings. 如果将 tmux 设置成了 vim bindings, 进入 copy mode 再用 slash (/) 进行搜索.

状态栏设置

tmux 设置状态栏显示的信息,此处仅显示hostname,运行命令

tmux set -g status-right "#H"

或者在tmux配置文件(~/.tmux.conf)中写入set -g status-right "#H"

引号中还可以是自定义的文字,比如"-------"。

应用场景:一种场景是在Xshell等工具中当命令行中有内容变化时状态图标也会跟着变化,而当tmux的状态栏上时间每分钟发生一次变化时会导致Xshell的状态图标跟着发生变化,并且在用鼠标滚轮向上滚屏看历史输出时也会因为底部状态栏的变化导致视野跳到最后一行。

关闭状态栏:set -g status off

开启状态栏:set -g status on

更多tmux内容,参考

tmate

特性

  1. 远程终端共享(支持ssh和web上的命令行,且有只读模式)
  2. 基于tmux,多路终端复用
  3. 完全开源,支持自己搭建服务器,默认使用tmate.io的服务器

主页 https://tmate.io

如同ssh反向隧道。

简易用法:

tmate # 进入tmux,并创建隧道链接,底部显示链接地址,几秒后消失
tmate show-messages # 显示刚才建立的ssh地址与web地址

后台运行(daemon):

tmate -S /tmp/tmate.sock new-session -d               # Launch tmate in a detached state
tmate -S /tmp/tmate.sock wait tmate-ready # Blocks until the SSH connection is established
tmate -S /tmp/tmate.sock display -p '#{tmate_ssh}' # Prints the SSH connection string
tmate -S /tmp/tmate.sock display -p '#{tmate_ssh_ro}' # Prints the read-only SSH connection string
tmate -S /tmp/tmate.sock display -p '#{tmate_web}' # Prints the web connection string
tmate -S /tmp/tmate.sock display -p '#{tmate_web_ro}' # Prints the read-only web connection string

首先远程端和本地端安装ssh相关工具,使用ssh-keygen产生公钥和私钥(否则会提示Permission denied (publickey)之类的错误)。

screen

GNU Screen 也是一个终端多路复用器(窗口管理器)。GNU Screen 允许我们轻松创建多个 Screen 会话,在不同会话之间切换,在会话之间复制文本,随时连上或脱离会话等等。

由于tmux可能没有被系统预装,而screen可能被CentOS等系统预装,因此可以临时使用screen命令。在 Screen 中所有命令的默认前缀快捷方式是 Ctrl + a。

创建新的 Screen 会话

screen # 创建会话

screen -S name # 创建命名会话,id.name

列出屏幕会话

screen -ls # 列出所有Detached和Attached会话

连上 Screen 会话

如果你想连上会话,例如 29415.ostechnix,只需运行:

screen -r 29415.ostechnix	# 全名
screen -r 29415 # 或使用 Screen ID
screen -r ostechnix # 或使用后缀名

从 Screen 会话脱离

要从屏幕会话中脱离,按 Ctrl + ad。类似tmux的操作。

创建嵌套会话

操作类似tmux:

在会话中按 Ctrl + ac 创建另一个会话。只需重复此操作即可创建任意数量的嵌套 Screen 会话。每个会话都将分配一个号码。号码将从 0 开始。

键盘快捷键列表:

Ctrl + a " - 列出所有会话

Ctrl + a 0 - 切换到会话号 0

Ctrl + a n - 切换到下一个会话

Ctrl + a p - 切换到上一个会话

Ctrl + a S - 将当前区域水平分割为两个区域

Ctrl + a l - 将当前区域垂直分割为两个区域

Ctrl + a Q - 关闭除当前会话之外的所有会话

Ctrl + a X - 关闭当前会话

Ctrl + a \ - 终止所有会话并终止 Screen

Ctrl + a ? - 显示键绑定。要退出,请按回车

screen Attached 状态异常[2]

有时候由于正在运行screen的终端异常关闭时,这里列出的会话依然显示Attached。

screen -ls, 显示某会话的当前状态为Attached, 但当前并没有终端连接到这个会话,此时正常状态应该为Detached。此时用screen -r <session-id>,无法attach。原因是screen没有正常detach。

解决方法:screen -D -r <session-id>

-D -r 先踢掉前一用户,再登陆。


  1. http://wiki.fast.ai/index.php/Tmux ↩︎

  2. http://blog.csdn.net/gdali/article/details/72799581 ↩︎

tmux终端复用/tmate终端共享的更多相关文章

  1. (转载)Linux终端复用神器-Tmux使用

    Linux终端复用神器-Tmux使用 转载地址:https://blog.51cto.com/652465/2094738 Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于Open ...

  2. Linux终端复用神器-Tmux使用梳理

    Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“ ...

  3. 终端复用软件 tmux

    Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权. Tmux 所使用的快捷键前缀默认是组合键 Ctrl-b(同时按下 Ctrl 键和 b 键). 技巧 ...

  4. Linux终端复用工具 tmux

    简介 Terminal Multiplexer (From WIKIPEDIA) - A terminal multiplexer is a software application that can ...

  5. 终端复用工具 tmux 基本操作教程

    简介 在 Linux 操作环境下,终端操作是发挥 Linux 强大命令功能的重要途径,但在本地主机操作中,针对不同任务开启不同的终端,在使用时进行频繁的终端切换在某些场合下是一种使人分心和疲惫的操作, ...

  6. [linux] tmux终端复用神器 [转载]

    转载https://www.cnblogs.com/kevingrace/p/6496899.html Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授 ...

  7. [Linux] tmux 终端复用命令行工具

    tmux 终端复用命令行工具 tmux 是一款终端复用命令行工具,通常用于 Terminal 的窗口管理.可以在终端软件重启后通过命令行恢复上次的 session. 安装运行 macOS 上使用 Ho ...

  8. 终端复用工具tmux的使用

    tmux的作用在于终端复用. 1. 在server上启动一个bash.并在里面执行tmux 2. 通过ssh远程登录server,执行tmux attach,就会切换到server上的那个bash中, ...

  9. tmux:终端复用神器

    一.简介与安装 今天无意间从同事那里知道有 tmux 这种神器,tmux(terminal multiplexer)是Linux上的终端复用神器,可从一个屏幕上管理多个终端(准确说是伪终端).使用该工 ...

随机推荐

  1. 20155334 网络对抗PC平台逆向破解(二)

    注入Shellcode并运行攻击 shellcode就是一段机器指令(code) 通常这段机器指令的目的是为获取一个交互式的shell(像linux的shell或类似windows下的cmd.exe) ...

  2. POJ 1068&&2632&&1573&&2993&&2996

    这次的题目是著名的模拟(水逼)专题 题目难度都不大,思维也不深,就是一个字——烦 同时很多题目都有很多坑点 1608 题意是告诉你一个只有()的字符串(且匹配正确),每个)的左边有几个(,让你求每一对 ...

  3. STM32-M0中断优先级介绍

    先解释中断优先级,后面讲代码的实现. 差异:M0的中断优先级相比于M4,没有用到分组,且只用到了2个bit位(即0~3)来设置,数值越小,优先级越高:同等优先级,根据终端号的大小来决定谁先执行. 根据 ...

  4. 解决 配置springmvc拦截所有请求后请求静态资源404的问题

    <servlet-mapping> <servlet-name>spring-servlet</servlet-name> <url-pattern>/ ...

  5. vue基础项目安装教程

    安装node.js 从node.js官网下载并安装node,安装过程很简单,一路“下一步”就可以了. 安装完成之后,打开命令行工具,输入 node -v,如下图,如果出现相应的版本号,则说明安装成功. ...

  6. 个人新站 【EXP技术分享博客】 落成~ 全新的技术资源~ 欢迎莅临~

    对的,我筹备了大半年的个站技术网站正式开张了~ EXP技术分享博客: http://exp-blog.com CSDN上面大部分文章已经迁移过去了,以后也会更多地在新站点更新~ 为了庆祝新站开张,近期 ...

  7. python 游戏(数字推理游戏Bagels)

    1.游戏思路和流程图 实现功能:玩家猜测三位不一样的数字,猜错了有提示,提示分别为(位置错误数字正确),(位置和数字正确),(数字和位置都不正确) 游戏流程图 2. 使用模块和游戏提示 import ...

  8. Daily Scrum NO.4

    工作概况 符美潇(PM) 昨日完成的工作 1.Daily Scrum.日常会议及日常工作的分配和查收. 2.解决并录入了一个严重的过滤器BUG,该BUG会导致获取子链接的严重异常. 3.在TFS上进行 ...

  9. 《Linux内核设计与实现》第18章读书整理

    第十八章.调试 18.1 准备开始 如果bug能重现的话,将会有很大的帮助. 18.2 内核中的bug Bug多种多样,产生的原因可以有无数的原因,表象也变化多端. 从隐藏在源代码中的错误到展现在目击 ...

  10. Hamburger

    Bread: 我觉得舒婷解决问题的思路还是很不错的,对于java 的窗口框架也是很熟悉,打码速度也快了很多. Meat:但是我发现你在命名的时候会出现随意的现象,如果命名只有你自己看得懂的话,那么会增 ...