终端复用器tmux教程
目录
Note
重新连接才是最好玩和有用的 见 兴趣例子 Nov 03 2021
* Tmux 是什么
tmux Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机。是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。 tmux 是一个与 GNU screen 类似的程序,可作为后者的替代品使用。 感觉更加好用 ,screen常常是那个历史什么的不能用 类似的终端复用器还有 GNU Screen。Tmux 与它功能相似,但是更易用,也更强大。
* 基本用法
** install
Ubuntu 或 Debian
$ sudo apt-get install tmux
CentOS 或 Fedora
$ sudo yum install tmux
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查看会话历史输出信息
这个好 # 在会话中切换 control+b,再按s 显示会话列表,再进行会话切换
然后先按快捷键ctrl+b,松开后再按下[,即进入历史输出信息查看模式,可通过键盘上的上下左右键来滚动历史输出信息。 如果要退出查看模式,按下q即可
* 会话管理
* 新建会话
第一个启动的 Tmux 窗口, 如梭screen 编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。 快捷键 ctrl+b c 使用编号区分会话,不太直观,更好的方法是为会话起名 mux new -s <session-name> tag $ 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!!!
杀死会话
Nov 2021 tmux ls # 使用会话编号 $ tmux kill-session -t 0 # 关闭指定会话 tmux kill-session -t session-name # 关闭除指定会话外的所有会话 tmux kill-session -a -t session-name # 在会话中切换 control+b,再按s 显示会话列表,再进行会话切换 # 销毁所有会话并停止 tmux kill-server
* 窗格操作
** 划分窗格
- 划分上下两个窗格
$ tmux split-window
- 划分左右两个窗格
$ 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