相关阅读
Tmuxhttps://blog.csdn.net/weixin_45791458/category_12472796.html?spm=1001.2014.3001.5482
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+:进入命令模式
使用上述命令后,可以看到如下图所示的界面。
可以看到除了下面多了一行tmux状态信息栏,tmux内部界面与普通的shell界面并没有差别,这就是tmux为什么被称为终端复用器,它允许同时对多个shell在一个客户端进行管理。tmux状态栏中的[1]表示当前连接到的会话名(在创建会话且不指定名字时,默认从0开始依次递增),0:表示当前窗口的编号是0,zsh即Mac系统默认的shell,表示当前窗口的名称(当不指定窗口名称时,窗口的名字为当前的窗格中运行的进程名),最后的*标志了当前处于的窗口。
在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状态栏中的[test]表示了目前在test会话内。
显示tmux服务器上的所有会话是很重要的,以下命令可以做到这一点。
$tmux ls //在tmux内部和外部均可使用
$tmux list-sessions //在tmux内部和外部均可使用
继续之前的示例,我们使用tmux ls命令可以看到服务器上有两个会话,并且每个会话各有一个窗口,以及会话的创建时间,如下图所示。
那么如果我不想要一个会话了,如何删除它呢?以下是几种方法,但需要注意的是,如果删除了一个会话,那么所有连接到该会话的用户都会退出。
$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的会话外所有会话
在test会话中使用tmux kill-session命令,即删除会话并断开客户端的连接,如下图所示。
如果创建会话时是默认名字,后面依旧可以重命名,如下所示。需要注意的是更改后的会话名不能与现有名字冲突。
$tmux rename-session -t old_session_name new_session_name //在tmux内部和外部均可使用
$tmux rename -t old_session_name new_session_name //在tmux内部和外部均可使用
$tmux rename-session new_session_name //在tmux内部使用,改变当前会话的名字,在tmux外部使用,改变最后一个连接的会话的名字
$tmux rename new_session_name //在tmux内部使用,改变当前会话的名字,在tmux外部使用,改变最后一个连接的会话的名字
[ctrl]+b+$ //在tmux内部使用
如下图所示,在会话0内部使用[ctrl]+b+$更改会话名字为1 。
如果我不想删除会话,只是想暂时把其放回后台即断开连接,此时使用的命令如下所示。注意,这不会影响会话中进程的执行。
$tmux detach-client //在tmux内部使用,断开与当前会话的连接
[ctrl]+b+d //在tmux内部使用,断开与当前会话的连接
[ctrl]+b+D //在tmux内部使用,选择一个客户,断开其连接的会话
如下图所示,在会话1内使用[ctrl]+b+d断开会话连接,主页面会显示[detached(from session *)]。
当你想重新连接会话时,也有几种命令可以使用,如下所示。
$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的更多操作,后续会有相关文章。