tmux、byobu

一、 命令介绍

Tmux ("Terminal Multiplexer"的简称), 是一款优秀的终端复用软件,类似 GNU screen,但比screen更出色。tmux来自于OpenBSD,采用BSD授权。使用它最直观的好处就是, 通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机, 还有一个好处就是当终端关闭后该shell里面运行的任务进程也会随之中断,通过使用tmux就能很容易的解决这个问题。

二、 使用场景

1. 关闭终端,再次打开时原终端里面的任务进程依然不会中断 ;

2. 处于异地的两人可以对同一会话进行操作,一方的操作另一方可以实时看到 ;

3. 可以在单个屏幕的灵活布局下开出很多终端,然后就能协作地使用它们 ;

三、 命令用法

个别选项及参数介绍

1. 运行tmux:

# tmux

2. 新建会话: # tmux  new  -s  SESSION-NAME

(注:SESSION-NAME表示会话名称,可以为字母或数字)

也可以不用指定会话名称 ( 不推荐): # tmux  new

# tmux new -s second-tmux

3. 查看已创建的会话:

#tmux  ls
0: 1 windows (created Sat Nov 21 16:40:41 2020) [125x36]
2: 1 windows (created Sat Nov 21 16:46:15 2020) [125x36]
ping.sh: 1 windows (created Sat Nov 21 16:42:03 2020) [125x36]

4. 进入一个已知会话:

# tmux  a  -t SESSION-NAME 

# tmux  attach  -t  SESSION-NAME

5. 暂时离开当前会话:

# tmux detach

6. 关闭会话:

# tmux  kill-session  -t  SESSION-NAME

# tmux  kill-serve   关闭所有的会话

关闭除指定会话外的所有会话

tmux kill-session -a -t session-name

注: 1. 单独运行tmux命令,即开启一个tmux会话 ;

        2. 不能在tmux会话里面再新建会话,会报错:"sessions should be nested with care, unset $TMUX to force"

7、在会话中切换

control+b,再按s 显示会话列表,再进行会话切换

8、重命名会话

tmux rename-session -t abc cba

9、脚本中使用tmux(实用)

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=QUIET root@node2 'tmux kill-server 1>/dev/null 2>&1'
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=QUIET root@node2 'tmux new -s mysql_decompress -d'
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=QUIET root@node2 'tmux send -t mysql_decompress '\''xtrabackup --decompress --remove-original \
    --parallel=4 --target-dir=/healsci/docker/volumes/mysqls_data/_data 1>/var/log/mysql_backup.log 2>&1 && exit'\'' Enter'

注:

1、ssh

-o StrictHostKeyChecking=no:这个选项告诉 SSH 客户端在连接远程主机时不进行主机密钥检查

-o UserKnownHostsFile=/dev/null:这个选项指定一个文件来存储以往连接的主机密钥信息。在这里设置为 /dev/null 意味着不会将所连接主机的密钥信息存储到文件中

-o LogLevel=QUIET:这个选项指定 SSH 的日志详细程度。设置为 QUIET 意味着 SSH 将不会输出警告或错误信息

2、tmux

tmux kill-server  终止所有 tmux 会话

tmux new -s mysql_decompress -d  新建一个会话放到后台

tmux send -t mysql_decompress xxx 2>&1 && exit'\'' Enter' 用于向指定的 tmux 窗口发送输入,

&& exit 通常用于在命令完成后自动关闭兼容的 tmux 面板

Enter:发送一个回车键(Enter)以真正执行上述命令。这在 tmux send-keys 中通常由 C-m 来表示。

3、标准输出和标准错误输出

1>/dev/null:这部分将标准输出重定向到 /dev/null,即丢弃所有正常输出。

2>&1:这将标准错误输出重定向到标准输出流,由于标准输出已经重定向到 /dev/null,因此标准错误也会被丢弃。

测试:向tmux 中发送命令,执行完命令后关闭tmux

# tmux  ls
test: 1 windows (created Wed Aug 28 16:27:19 2024)

# tmux send-keys -t test 'mkdir /root/test && exit' Enter

# ls /root/
anaconda-ks.cfg  mysql_slave_init.sql  rebuild_mysqls.sh  test

# tmux ls
no server running on /tmp/tmux-0/default  

四、 分屏操作

很多情况下, 需要在一个会话中运行多个命令,执行多个任务,我们可以在一个会话的多个窗口里组织他们。

1. 分屏:分为水平分屏和垂直分屏

水平分屏

快捷键:先按 ctrl+b, 放开后再按%

垂直分屏

快捷键:先按 ctrl+b, 放开后再按 "

分屏后的窗口中的光标互相切换

快捷键:先按ctrl+b, 放开后再按下o

切换tmux会话终端

快捷键:先按ctrl+b, 放开后再按s

终端内显示时间 

快捷键:先按ctrl+b, 放开后再按t

退出时间界面:按q键

切换tmux分屏

快捷键:先按ctrl+b, 放开后再按方向键

关闭tmux分屏

快捷键:先按ctrl+b, 放开后再按x

五、其他快捷键操作

终止一个终端窗口(需确认) 

快捷键:exit 或 先按ctrl+b, 放开后再按 &

在当前窗口的基础上再打开一个新的窗口

快捷键:先按ctrl+b, 放开后再按c

暂时退出当前会话 

快捷键:先按ctrl+b, 放开后再按 d

查看面板编号 

快捷键:先按ctrl+b, 放开后再按q

关闭所有分屏后的窗口,即合并为一个窗口 

快捷键:先按ctrl+b, 放开后再按!

六、 快捷命令介绍

tmux new -s 会话名  //新起一个会话

ctrl+b, 放开后再按 [ ,停住屏幕滚动,按esc退出。
tmux ls //查看现有的会话
tmux a //进入最近的会话
tmux a -t  会话名//进入指定会话
tumx kill-session -t 会话名 //干掉指定会话

control+b //唤起tmux(命令前缀)
c  //创建新窗口
w //查看所有窗口
" //横分面板
% //竖分面板
, //修改窗口名
? //查看所有命令,q退出
q //显示面板号,快速输入面板号可以选择相应面板
d //挂起当前会话
s //查看所有会话,q退出
$ //修改会话名称
p //切换窗口
: //命令行模式

七、byobu

(1条消息) linux终端管理软件byobu_暴躁牙疼的博客-CSDN博客_byobu删除窗口

使用xpanes来并发执行命令 | Escape (escapelife.site)

 

posted @ 2020-11-21 16:57  凡人半睁眼  阅读(770)  评论(0编辑  收藏  举报