如何在 Ubuntu 12.10 上安装和使用 tmux
关于 tmux
tmux 是一个终端多路复用器。它允许您使用多个虚拟终端访问一个 tmux 终端。
tmux 利用客户端-服务器模型,允许您将终端连接到 tmux 会话。
这意味着您可以在单个 tmux 会话中同时运行多个终端,而无需产生任何新的实际终端会话。
这也意味着突然断开与运行 tmux 的云服务器的连接不会终止在 tmux 会话中运行的进程。
tmux 还包括一种窗口窗格心态,这意味着您可以在一个屏幕上运行多个终端。
客户端-服务器模型和窗口窗格心态的优点将在下面进一步讨论。
在 VPS 上安装 tmux
在 VPS 上安装 tmux 之前,最好先更新 apt 以确保我们拥有最新的软件包。
<pre>sudo apt-get update</pre>
然后安装 tmux:
<pre>sudo apt-get install tmux</pre>
基本用法
要开始一个新的 tmux 会话:
<pre>tmux</pre>
tmux 将使用您的用户帐户自动登录到您的默认 shell。
一个区别是屏幕底部 tmux 状态行的外观。它将显示有关当前 tmux 会话的信息。
实际上,您可以将其视为一个全新的终端。事实上,它真的只是一个从 tmux 内部运行的新终端。
这个新终端在 tmux 的上下文中称为 window。让我们将窗口分成两个窗格。
可以使用前缀键(默认情况下为 Ctrl-b)和命令键来控制 tmux。分成两个窗格的命令键是 %。从 tmux 内部:
<pre>Ctrl-b %</pre>
该窗口将分成两个窗格。第一个窗格将保留拆分之前的工作。第二个将登录到一个全新的终端。
我们可以水平拆分第二个窗格:
<pre>Ctrl-b "</pre>
现在我们的窗口中有三个窗格。它应该是这样的:
要切换到下一个窗格(窗格从左到右、从上到下编号):
<pre>Ctrl-b o</pre>
使用 exit
退出 shell 将破坏关联的窗格。相邻的窗格将展开以利用释放的空间。
关闭最后一个窗格将结束 tmux。
使用视窗
窗格上方上下文中的一个步骤是窗口。 Windows 的行为类似于浏览器中的选项卡。
当 tmux 启动时,它会为您提供一个窗口和窗口内的单个窗格。
要创建一个新窗口:
<pre>Ctrl-b c</pre>
tmux 会自动切换到新窗口。您可以看到状态行中指示的新窗口。窗口从 0 开始编号,所以我们的新窗口编号为 1。
现在您可以像以前一样创建窗格并处理此窗口。我们甚至可以创建另一个窗口。我们的三个窗口编号为 0、1 和 2。
要移动到索引中的下一个窗口:
<pre>Ctrl-b n</pre>
要在索引中向后移动:
<pre>Ctrl-b p</pre>
Windows 提供了比窗格更具体的分隔。两个窗口永远不会同时可见。
利用客户端-服务器模型
当您调用 tmux 时真正发生的事情比最初看起来要复杂得多。 tmux 实际上创建了一个新的 session。然后在会话中创建一个窗口。在窗口中创建一个窗格。
调用 tmux 时会创建新会话。它是最高级别的上下文包含。单个 tmux 实例链接到单个会话。
当您在会话的最后一个窗口的最后一个窗格中退出最后一个 shell 时,会话将终止。您可以从会话中_分离_,而不是完全退出会话。
会话将继续在后台运行(tmux 将分叉到后台),运行分离时它上面的任何 shell。
当您稍后重新连接到会话时,您将以分离时的相同状态返回到会话。会话保留所有窗口和窗格。
这对于让进程在虚拟专用服务器上运行而不保持与 VPS 的连接特别有用。
要从会话中分离:
<pre>Ctrl-b d</pre>
要重新附加到会话:
<pre>tmux attach -t [session name]</pre>
session 和 windows 一样,都是从 0 开始编号的。如果你忘记了你想附加到哪个 session,你可以查看活动的 session:
<pre>tmux list-sessions</pre>
可以通过以下方式访问所有命令键的列表:
<pre>Ctrl-b ?</pre>