快捷查询目录
命令行会话
命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session) 。
当使用远程连接工具(如 iTerm、putty、XShell、SecureCRT 等),SSH 登录远程计算机,打开一个远程窗口执行命令。有时候想要执行一个非常耗时,或者短时间不会结束的进程时,想在空闲的时间,比如晚上,让它执行,不影响正常工作,但是正常通过ssh启动的进程都是ssh进程的子进程,如果ssh断开,ssh进程就会被系统kill,与此同时所有通过ssh启动的进程也都会被killed。
为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口
tmux的作用
tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。
ssh远程到服务器后,执行一个费时的操作,断开ssh后任务可以继续执行,不会中断 ssh到远程服务器,可以分屏,可以多任务(会话),可以多窗口 类似的终端复用器还有 GNU Screen。Tmux 与它功能相似,但是更易用,也更强大。
tmux的使用
tmux中有3种概念,会话(session),窗口(window),窗格(pane)。tmux的会话和普通shell的会话类似,可以创建多个。一个会话可以包含多个窗口,一个窗口可以被分割成多个窗格。
tmux的命令有一个前缀ctrl + b,需要先按下这两个键放开后再按特定键执行特定指令。
创建会话 命令:tmux new -s 会话名称
执行命令之后进入该会话,会自动创建一个窗口,如下图:
退出会话
命令:ctrl + b d 字母d是detach的缩写
执行命令之后回到shell终端环境,但是tmux的会话还在后台运行。tmux依然在运行
从终端环境进入会话
使用会话名接入命令:tmux a -t
会话名使用session编号接入:tmux attach -t 编号
其中a字母是attach的头字母,表示附加,-t 指定要进入已存在的会话名,如果不存在则会报告 session not found 错误。
查看会话列表
shell终端环境查看会话命令:tmux ls
tmux会话环境查看会话列表:ctrl + b s
如果有多个会话,可以通过方向键选择会话并回车,在会话间进行切换。
销毁会话
在终端环境中命令:tmux kill-session -t 会话名 也可以使用会话编号
在会话环境中运行 ctrl+b :(注意按组合键之后再按一个冒号键),状态栏变成黄色之后提示我们可以在会话环境中输入命令,此时
输入 kill-session -t session 回车即可。
重命名会话
在终端环境中命令:tmux rename -t old_session_name new_session_name
在tmux会话中命令:ctrl + b $
窗口管理
一个tmux的会话中可以有多个窗口。
修改当前窗口的名字:crtl+b
创建新的窗口:ctrl+b c
切换窗口:
ctrl+b p (previous的首字母) 切换到上一个window。 ctrl+b n (next的首字母) 切换到下一个window。 ctrl+b 0 切换到0号window,依次类推,可换成任意窗口序号 ctrl+b w (windows的首字母) 列出当前session所有window,通过上、下键切换窗口 ctrl+b l (字母L的小写)相邻的window切换 关闭当前窗口:ctrl+b &
窗格管理
tmux的一个窗口可以被分成多个pane(窗格),可以做出分屏的效果。
ctrl+b x 关闭当前使用中的pane,操作之后会给出是否关闭的提示,按y确认即关闭。
常用窗格命令:
ctrl+b %:划分左右两个窗格。
ctrl+b ":划分上下两个窗格。
ctrl+b ;:光标切换到上一个窗格。
ctrl+b o 依次切换当前窗口下的各个pane。
ctrl+b Up|Down|Left|Right根据按箭方向选择切换到某个pane。
ctrl+b Space (空格键) 对当前窗口下的所有pane重新排列布局,每按一次,换一种样式。
ctrl+b z 最大化当前pane。再按一次后恢复。
ctrl+b !:关闭其他窗格,只有一个独立窗口。
其他命令:
ctrl+b {:当前窗格与上一个窗格交换位置。
ctrl+b }:当前窗格与下一个窗格交换位置。
ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。
ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。
ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
ctrl+b ctrl+:按箭头方向调整窗格大小。
ctrl+b q:显示窗格编号。
其他常用功能
同步窗格 这样可以将输入的命令在本窗口的多个窗格同时执行。 快捷键ctrl+b : 呼出命令提示行,然后输入
:setw synchronize-panes (支持tap补全)
这个选项值针对某个窗口有效,不会影响别的会话和窗口。 完事儿之后再次执行命令来关闭。
文本复制模式
快捷键ctrl+b [,即进入文本复制模式,可以像使用vim一样对文本复制,可通过键盘上的上下左右键来滚动查看历史输出信息。
如果要退出查看模式,按下q/esc即可。
ctrl+b ? 列出所有快捷键
整个解决方案由三个tmux插件组成。
需要注意的是,使用这两个 Tmux 插件要求 Tmux 是 1.9 及以上版本,如果不符合要求,赶紧升级吧, 可以参考:tmux安装最新版本
tpm:tmux plugin manager:
这个是用来管理tmux插件的。有了它之后,就可以很轻松地安装和写在tmux插件。
tmux-resurrect:
这个是主角,提供了保存tmux会话到磁盘,以及从磁盘上加载保存的会话的功能。但是只能在需要的时候手动操作。
tmux-continuum:
提供了定时保存,自动加载,以及开机设置自动启动tmux的功能。需要tmux-resurrect来完成具体的工作。 安装及配置 安装很简单,只需要
git clone GitHub - tmux-plugins/tpm: Tmux Plugin Manager ~/.tmux/plugins/tpm 然后,在~/.tmux.conf中配置:
set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-save-interval '15' set -g @continuum-restore 'on' set -g @resurrect-capture-pane-contents 'on'
run -b '~/.tmux/plugins/tpm/tpm'
然后需要在shell中运行
tmux source ~/.tmux.conf
使用 安装插件 然后就可以在Tmux中使用快捷prefix + I(注意这里的I是大写)安装配置文件.tmux.conf中定义的插件了。
prefix (主操作按键:默认为ctrl + b)
保存和恢复
保存
prefix + Ctrl-s
要保存 Tmux 会话,我们只要按 前缀键 + Ctrl-s 就可以了。此时,Tmux 状态栏会显示“Saving …”字样,完毕后会提示 Tmux 环境已保存。
Tmux Resurrect 会将 Tmux 会话的详细信息以文本文件形式保存到 ~/.tmux/resurrect 目录。
恢复
prefix(ctrl + b) + Ctrl-r
平常重启电脑后,首先在终端打开Tmux,然后使用prefix + Ctrl-r就可以恢复保存的Session了,如果有多个Session可以使用prefix + s来选择Session。
在 tmux 中,你可以通过创建多个窗格(panes)在一个窗口中运行多个会话。以下是一些常用的 tmux 窗格管理命令:
细化:窗格
-
创建窗格:
-
水平分割窗口:
Ctrl-b %
-
垂直分割窗口:
Ctrl-b "
-
-
切换窗格:
-
切换到下一个窗格:
Ctrl-b o
-
切换到特定的窗格:
Ctrl-b q
,然后输入窗格的索引号。
-
-
调整窗格大小:
-
调整当前窗格为更大的尺寸:
Ctrl-b z
-
手动调整窗格大小:
Ctrl-b :
,然后输入resize-pane -D
(向上移动),-U
(向下移动),-L
(向左移动),-R
(向右移动)。
-
-
关闭窗格:
关闭当前窗格:Ctrl-b x
-
更改窗格布局:
按照预设的几种布局方式切换:Ctrl-b 空格键
-
交换窗格:
交换两个窗格的位置:Ctrl-b {
或Ctrl-b }