Tmux学习
题记
用了快半年的screen,最近想换成tmux试一试,所以用博客记录一下简单的使用体验。这篇博客的内容主要参考了How to Use tmux on Linux (and Why It’s Better Than Screen)。
为什么使用tmux
Screen和tmux都是用来在连接远程服务器的时候管理会话的工具,这类工具的专用名词叫终端复用器(terminal multiplexers),最早接触到这类工具的时候,还是搭建我的世界服务器的时候,我还写了一篇搭建的博客。
作用
- 本地关闭远程连接程序,远程继续执行,并且能恢复会话
- 分屏操作
为什么从screen转向tmux
事实上2个工具功能几乎完全一样,我也非常喜欢使用screen,第一个原因是可以看见网上很多人都是更推荐tmux的,因为screen稍显粗糙,但是对我来说我替换成tmux的最大的理由是screen的分屏不好看,如下图分屏的大白线是什么鬼啊,而且不支持左右分屏。
Tmux的使用
安装
|
|
开启一个tmux的session
执行tmux
命令,就会进入tmux的session,下方出现绿色的状态栏(status bar)。
其中[0]
是session名,默认是按数字(后文将介绍自定义session名);0:bash*
中的0表示这个session中的第一个window,而在window中运行的进程是bash;星号*
的意思是这是你在操作的window。
p.s. screen中没有这个状态栏,这也是tmux的优势
Tmux的命令简单尝试
tmux的所有命令分为两部分,先按Ctrl+B
,让tmux知道要执行命令了,然后第二步按住需要执行的命令的按键。
如关闭命令,先按Ctrl+B
,然后按 X
,此时出现是否确认kill pane的提示,按住y,此时如果session中只有一个window(和一个pane,pane会在后文讲到),那么session也会被终止,从而退回最初执行tmux
命令之前的状态。
p.s. tmux的 Ctrl+B
相当于screen的Ctrl+A
,不过这个是可以设置的,后文介绍的修改Tmux的配置中修改成了Ctrl+A
。
创建一个自命名的session并使用多个window
使用以下命令,即可创建一个名为mysession的session。
tmux new -s mysession
在一个session中可以有多个window, 使用Ctrl+B C
命令,就在当前(current)会话创建一个新的window了,在新的window中执行top
命令,可以看到绿色状态栏原本bash的位置变成了top。
接着使用Ctrl+B W
命令,查看所有的window的列表,从而随意切换。也可以直接使用Ctrl+B
然后按数字键0-9进行快速切换。
分离(Detach) 和 接入(Attach) Session
如果detach一个session,界面会退出,但是session中的程序会继续在后台运行,而Attach就是回到指定session的界面。
detach的命令为Ctrl+B D
attach的命令为tmux attach-session -t mysession
,(t意为target,mysession为session名),也可以简写成tmux a -t mysession
使用命令tmux ls
可以查看当前所有session,从而确定要进入哪个session, 如果你已经在一个session中了使用Ctrl+B S
能够快速查看和切换session。
按住右键能够展开查看window并切换,这是真的方便。
p.s. 在screen中,如果要进入一个已经attached的session,就要使用命令screen -D -r <session-name>
强行将detach掉那个session(或者说先踢掉使用那个session的用户)然后再进入。而tmux中可以多个终端attach同一个session,比如想教别人远程操作服务器,两个人分别用不同电脑远程连接到同一个session中,其中一个人的所有的操作,在另一个人的电脑都会同时显示出来。
分屏操作
Ctrl+b %
:划分左右两个窗格。Ctrl+b "
:划分上下两个窗格。Ctrl+b z
:当前窗格全屏显示,再使用一次会变回原来大小。Ctrl+b q
:显示窗格编号。
分屏在tmux里面叫做窗格(pane),如上图就是3个pane,你会发现退出命令Ctrl+B X
退出的时候也是提示你是否退出pane。session和window和pane的关系是:一个session里面可以有很多window,一个window里面可以有很多pane。
具体使用方式根据需求而异, 我自己比较喜欢2个session(一个跑python脚本、一个跑shell脚本)+多个window+单个或多个pane的工作方式, 如果是后台长期挂着的程序,比如我的世界服务端我还是会用screen。
常用命令总结
- 创建会话
tmux new -s <session-name>
- 分离session
Ctrl+B D
- 接入session
tmux a -t <session-name>
- 查看所有window
Ctrl+B W
- 查看所有session
tmux ls
或在session中使用Ctrl+B S
,在列表按方向右键会展开看到window。 - 重命名session
tmux rename-session -t <old-session-name> <new-name>
修改Tmux的配置
修改tmux的配置基本是必须的,不然和screen根本拉不开差距。
配置文件来源:https://www.jianshu.com/p/fd3bbdba9dc9
修改方法是touch ~/.tmux.conf
, 输入以下内容。
|
|
修改包括:
Send prefix 把prefix的ctrl+b变为了ctrl+a,因为这样按起来方便些。基本上用tmux的都改了这个。
Use Alt-arrow keys to switch panes 不用按prefix,直接用alt+箭头在pane之间switch。实际用过之后才发现真是太方便了!
Shift arrow to switch windows 不用按prefix,直接用shift+箭头在window之间switch。太方便了!
Mouse mode 开启鼠标模式。用鼠标就能切换window,pane,还能调整pane的大小,方便!
Set easier window split keys 这一部分是用来更方便切分pane的。prefix + v 代表竖着切,prefix + h 代表横着切。比起默认的切割方法不仅直观而且方便。
Easy config reload 下一次如果修改了.tmux.conf的设置的话,不用关掉tmux。直接用prefix+r,就能重新加载设置。
相关评价
- 开发工具 screen vs tmux https://ruby-china.org/topics/4834
- How to Use tmux on Linux (and Why It’s Better Than Screen) https://www.howtogeek.com/671422/how-to-use-tmux-on-linux-and-why-its-better-than-screen/