tmux

会话和进程:

平时使用命令行一般都是打开一个终端,输入ssh指令,和远程主机进行交互,然后关闭窗口,这称之为一次会话(session);

下次打开的时候需要重新连接远程主机,同时上次的操作历史指令已经不见了。这就反应了会话的特性,窗口和在窗口中启动的会话进程是强绑定的,打开窗口,会话开始,关闭窗口,会话结束,同时在会话中启动的进程也会结束。

为了解决这个问题,会话和窗口可以解绑,窗口关闭,会话不结束。同时会话还可以和其他窗口绑定。

tmux :

目前 Linux 系统对会话和窗口 绑定/解绑 功能不直接支持的, 所以我们要借助与其他的工具。screen, tmux 都是 该类型的工具, tmux 更加的强大,易用。

安装 tmux:

Ubuntu 或 Debian : apt-get install tmux

CentOS 或 Fedora: yum install tmux

Mac : brew install tmux

tmux 基本概念简介:

快捷键前缀:

tmux 有大量的快捷键,所有的快捷键都是通过前缀键 启动。相当于按下前缀键之后 会进入一个快捷键模式,之后才能使用快捷键。默认前缀键是 ctrl + b, 即按下 这两个键,就会进入快捷键模式;

例如最常用的 帮助命令快捷键是 ?,那么我们就要按下前缀键 ctrl + b, 之后再按下 ?,然后就会显示帮助信息了。

tmux 的对象映射关系:

注意点:

上层和下层的对应关系都是 1 : N, 使用快捷键和命令可以来回切换。

其中需要注意的是,我们执行最终的操作,也就是执行 shell 命令的部分都是在 会话级别的,也就是说,最终的实际操作都是在 Session 中进行的。

session 是可以在 窗格和窗口中 共享的,也就是说 在一个窗格下的session 可以在当前窗口中窗格 和 当前终端下的其他窗口下的窗格中访问的。

当窗口没有 分割为 窗格的时候,当前窗口就是一个单独的窗格。

会话管理:

新建会话:

tmux new -s  name

查看所有会话列表:

tmux ls / tmux list-session

解绑当前会话:

tmux detach 

绑定指定会话到当前窗格:

tmux attach -t session-name

杀死会话:

tmux kill-session -t session-name

切换会话:

tmux switch -t session-name

重命名会话:

tmux rename-session -t session-name new-session-name

窗格管理:

分割窗格:

tmux split-window  : 上下分割  (-h 左右分割)

选择窗格:

tmux select-pane [-U ]  [-D ]  [-L ]  [-R ]  : 上/下/左/右

交换窗格:

tmux swap-pane -U / -D 仅支持上下交换

常用窗格相关快捷键(默认都需要 先按下前导键 ):

z(zoom) : 最大化;x: 关闭该窗格;方向键:切换焦点到其他窗格;q: 显示窗格编号;ctrl + 方向键:调整当前焦点的窗格大小;

窗口管理:

新建窗口:

tmux new-window -n window-name

切换窗口:

tmux select-window -t window-name

重命名窗口:

tmux rename-window new-name

m常见错误:

创建会话出现:sessions should be nested with care, unset $TMUX to force:

意思是你不能在一个 虚拟会话中创建另一个虚拟会话。

也就是说你当前本身是在一个虚拟会话中的,所以你不能再创建另一个虚拟会话,解决办法就是,解绑当前虚拟会话,然后再创建会话

也就是执行 tmux detach, 然后在执行 tmux new -s session-name; 就可以了。

参考资料:

http://www.ruanyifeng.com/blog/2019/10/tmux.html

http://cenalulu.github.io/linux/professional-tmux-skills/

http://cenalulu.github.io/linux/tmux/

posted @ 2020-09-04 15:32  jzczer  阅读(343)  评论(0编辑  收藏  举报