tmux介绍与使用

Tmux是一个终端多路复用工具,非常强大,并且简洁。
我们打开一个一般的终端,比如terminator、konsole等,就会创建一个会话(session),当我们关闭这个终端界面的时候,这个会话的进程也会随之消失。当然我们也可以在konsole的终端中进行分屏处理,但是它的操作也是一个窗口对应一个session,并且窗口消失,session消失。
Tmux可以让会话(session)和窗口不绑定,也就是退出了这个窗口,session依旧存在,可以在后台接着运行程序。还可以进行分屏,并且下一次重新连接session的时候,分屏等状态还是存在。所以Tmux非常方便。
为了能更好的使用Tmux,先来了解一下概念:


基础概念

the tmux server and client

tmux将他所有的状态保存在一个主线程当中,称之为Server。Server在幕后运行,管理所有运行在tmux中的程序并且追踪他们的输出。当tmux命令执行后,server会自动运行,没有程序运行的时候就默认退出了。
用户连接上tmux server后开始一个客户端,这个客户端将接管用户当前使用的终端,并通过/tmp中的套接字文件与server进行通信。

Sessions, windows and panes

这个三个概念非常重要,是理解整个流程的关键!

Pane

每一个tmux中的终端(terminal)都属于一个窗格(pane),就是用于展示内容的矩形

windows

每一个窗格(pane)都属于一个窗口(window),一个窗口由一个或者多个窗格组成。可以认为windows只是为了去拍布(layout)Panes的一个窗体,类似于div的作用。

Session

与前后端开发中的session比较类似。在tmux里,可以认为client与server建立的一个连接就是一个session。在这个session中可以切换不同的window,每一个window中会有1+个pane,每个pane有一个terminal。

特别需要注意的一个问题:Session,在不同地方都有session这个词,但是具体意义并不太一样。打开一个终端软件,会运行一个shell,这个shell可以认为是一个session;在tmux中,创建一个与server连接的client,可以认为是session。但是这是两个不同的session。

shell创建的session与终端软件绑定,一旦退出软件,session亦然终止;tmux的一个session中可能会创建多个shell的session,而tmux的session是不与终端软件绑定的,所以退出软件,tmux的session还在,亦然tmux下shell的session也还在。但是pane与shell的session是绑定的。


所以我们通过tmux new -s xxx创建的是一个session,一个session默认自带一个window,window中自带一个pane。
在这个session中我们可以通过ctrl+b c 创建新的window,同理新的window中会自带一个pane。可以通过ctrl+b 数字 切换不同的window
每一个window中我们可以通过ctrl+b " 或者 ctrl+b %来添加新的pane。

也可以在一个session中,切换到别的session,更多的可以查看文档。使用man命令可以,也可以查看官方文档


一般流程

  1. 创建一个tmux session:tmux new -s <name>
  2. 在这个session中像打开普通终端一样执行程序
  3. 退出这个tmux session但是让它保持运行:ctrl+b D
    使用ctrl+b ctrl+z 也是可以的,但是不推荐
  4. 需要重新连接某个session:tmux attach -t <name>

若是不指定名字,每个session会有默认编号

posted @ 2023-06-01 13:56  凡璞  阅读(753)  评论(0编辑  收藏  举报
1 2
3 4
5 6