tmux(也称为终端多路复用器)是一个强大的终端工具,旨在提高终端用户的工作效率。它允许用户在一个终端窗口内创建多个会话和窗格,从而轻松地在一个屏幕上同时运行多个终端应用程序。tmux 的目标是将多个终端会话和任务组织在一个简单的界面中,以便用户可以更高效地管理和切换它们,而不必打开多个终端窗口。
tmux内有多个层级,分别是tmux服务器(server)、tmux客户端(client)、会话(session)、窗口(window)、窗格(pane)。客户端即相当于linux中的终端、用户可以通过客户端连接到服务器(更具体地来说,是连接到服务器上的会话)。
使用以下任意一种命令可以创建一个新的会话并将当前客户端连接到这个会话,下面的在tmux内部和外部指的是是否连接到了tmux服务器。
创建一个默认命名的会话,里面附带一个默认的窗口和窗格并连接到它们
$tmux //在tmux外部使用
$tmux new //在tmux外部使用
$tmux new-session //在tmux外部使用
:new //在tmux内部使用[ctrl]+b+:进入命令模式
使用上述命令后,可以看到如下图所示的界面。
可以看到除了下面多了一行状态信息,其他与普通的shell没有差别,这就是tmux作为终端复用器的由来。其中的[1]表示当前连接到的会话名(创建会话不指定名时,默认从0开始依次递增),0:表示当前在窗口0内,zsh表示当前窗格的进程名称,最后的*标志了当前处于的窗口和窗格。
在tmux内,有些命令有特定的快捷键,由前缀键+命令键组成,前缀键默认为[ctlr]+b。比如上面谈到的:new就是使用[ctlr]+b+:进入命令模式并输入new完成的。
下面的命令用于创建一个名字是mysession的会话并连接到它。
创建一个指定命名的会话,里面附带一个默认的窗口和窗格并连接到它们
$tmux new -s mysession //在tmux外部使用
:new -s mysession //在tmux内部使用[ctrl]+b+:进入命令模式
[ctrl]+b+s //在tmux内部使用
例如,我可以创建一个名字叫test的会话并连接到它,如下图所示。
显示服务器上的所有会话是很重要的,它可以用以下命令完成。
$tmux ls //在tmux内部和外部均可使用
$tmux list-sessions //在tmux内部和外部均可使用
继续之前的例子,我们使用命令可以看到有两个会话,并且每个会话有几个窗口,以及会话的创建时间,如下图所示。
那么如果我不想要一个会话了,如何删除它呢?以下是几种方法,但需要注意的是,如果删除了一个会话,那么所有连接到该会话的用户都会退出。
$tmux kill-session //在tmux内部使用则删除当前连接的会话,在tmux外部使用则删除最后连接的会话
$tmux kill-ses //在tmux内部使用则删除当前连接的会话,在tmux外部使用则删除最后连接的会话
$tmux kill-ses -t mysession //在tmux内部和外部均可使用,指定删除名字为mysession的会话
$tmux kill-session -t mysession //在tmux内部和外部均可使用,指定删除名字为mysession的会话
$tmux kill-session -a //在tmux内部使用则删除除当前连接的会话外的所有会话,在tmux外部使用则删除除最后连接的会话外的所有会话
$tmux kill-session -a -t mysession //在tmux内部和外部均可使用,删除除名字为mysession的会话外所有会话
如果创建会话时是默认名字,后面依旧可以重命名,如下所示。需要注意的是更改后的会话名不能与现有名字冲突。
$tmux rename-session -t old_session_name new_session_name //在tmux内部和外部均可使用
[ctrl]+b+$ //在tmux内部使用
如果我不想删除会话,只是想暂时把其放回后台即断开连接,此时使用的命令如下所示。注意,这不会影响会话中进程的执行。
$tmux detach-client //在tmux内部使用,断开与当前会话的连接
[ctrl]+b+d //在tmux内部使用,断开与当前会话的连接
[ctrl]+b+D //在tmux内部使用,选择一个客户,断开其连接的会话
当你想重新连接会话时,也有几种命令可以使用,如下所示。
$tmux a //在tmux外部使用,连接最后连接的会话
$tmux at //在tmux外部使用,连接最后连接的会话
$tmux attach //在tmux外部使用,连接最后连接的会话
$tmux attach-session //在tmux外部使用,连接最后连接的会话
$tmux a -t mysession //在tmux外部使用,连接名字为mysession的会话
$tmux at -t mysession //在tmux外部使用,连接名字为mysession的会话
$tmux attach -t mysession //在tmux外部使用,连接名字为mysession的会话
$tmux attach-session -t mysession //在tmux外部使用,连接名字为mysession的会话
当你想在不同的会话之间切换,可以使用以下的命令。
[ctrl]+b+( //在tmux内部使用,连接到上一个会话
[ctrl]+b+) //在tmux内部使用,连接到下一个会话
tmux switch-client -t target_session_name //在tmux内部使用,连接到名字为target_session_name的会话
以上就是tmux中常用的和会话有关的使用说明 ,关于tmux的更多操作,后续会有相关文章。