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