终端复用器tmux教程

来自linux中国网wiki
Evan讨论 | 贡献2021年11月3日 (三) 02:41的版本 →‎** 接入会话
跳到导航 跳到搜索

Note

重新连接才是最好玩和有用的 见 兴趣例子 Nov 03 2021

* Tmux 是什么

tmux Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机。是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。 tmux 是一个与 GNU screen 类似的程序,可作为后者的替代品使用。 感觉更加好用 ,screen常常是那个历史什么的不能用 类似的终端复用器还有 GNU Screen。Tmux 与它功能相似,但是更易用,也更强大。

* 基本用法

** install

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

** 启动与退出

和screen 一样 键入tmux命令,就进入了 Tmux 窗口

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

** 最常用的日常启动开始

启动 tmux 后,在窗口底部有状态行显示,其中包括已创建的窗口列表、当前窗口(使用 * 表示)等。

与 GNU screen 相似,tmux 也使用快捷键来执行相关操作。要创建一个新的窗口,可以按 C-b c,即先按 Ctrl-b,再按 c。在各个窗口间切换可使用下列快捷键:

   C-b n 切换到下一个窗口
   C-b p 切换到上一个窗口
   C-b 0、C-b 1……C-b n 切换到第 n 个窗口

分离会话可执行 C-b d 。

通过man tmux可以获得更详尽的 tmux 使用指南。

使用 技巧

#最后一行 是打log 也是为了 把所有的命令执行完成  Nov 2021
sudo -u ap php artisan original_data*clean:cs_im_message
清洗互动客户聊天数据 开始!
清洗互动客户聊天数据 结束!
[root@prod-com]# echo 'okdevops'>/tmp/devops.log 
[root@prod-]# cat /tmp/devops.log 
okdevops

* 会话管理

* 新建会话

第一个启动的 Tmux 窗口, 如梭screen 编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。

使用编号区分会话,不太直观,更好的方法是为会话起名

mux new -s <session-name> $ tmux new -s 36

** 分离会话

Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。

ctrl +d   b  


tmux ls命令可以查看当前所有的 Tmux 会话。

** 接入会话

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


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

    # 使用会话名称
    $ tmux attach -t <session-name>

 我的就是   tmux attach -t 36

兴趣例子 Nov 03 2021

tmux ls 
0: 2 windows (created Tue Oct 26 00:21:20 2021) [77x40] (attached)
1: 3 windows (created Tue Nov  2 22:23:31 2021) [103x40]
myevan: 3 windows (created Wed Nov  3 10:17:19 2021) [77x1] (attached)

 tmux attach -t 1


首先通过tmux命令进入指定会话:

tmux a -t mysession

** 会话快捷键

下面是一些会话相关的快捷键。

       Ctrl+b d:分离当前会话。
       Ctrl+b s:列出所有会话。
       Ctrl+b $:重命名当前会话。


* 最简操作流程

综上所述,以下是 Tmux 的最简操作流程。

       新建会话tmux new -s my_session。起名 不然下次不好找 
       在 Tmux 窗口运行所需的程序。
       按下快捷键Ctrl+b d将会话分离。
       下次使用时,重新连接到会话tmux attach-session -t my_session。
 # 重命名会话

tmux rename-session -t abc cba

trouble


错误原因:你已经打开了一个tmux 会话,然后你在这个tmux会话中试图打开另一个tmux会话。

这种嵌套的,一层套一层的,在虚拟会话中声明活着打开另一个虚拟回话,是不好的。

解决方式,直接在命令行打开或者新建

 tmux attach-session -t myevan
sessions should be nested with care, unset $TMUX to force

unset TMUX

运维操作流程

 如何在linux终端里创建一个tmux窗口的同时直接在窗口终端里执行命令呢?
这就需要用到tmux send -t session_name "command" ENTER!!!

杀死会话

tmux  ls

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

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

* 窗格操作

** 划分窗格

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


** 5.2 移动光标

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


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


* see also

Tmux 使用教程

什么是tmux

Tmux 虚拟终端使用

Tmux:终端复用利器


TMUX会话的使用