如何使用Tmux提高终端环境下的效率

我之前都是使用screen , 直到听到有人说tmux是screen的加强版
tmux有两个用处

  • 作为一名系统管理员,我大量的工作都需要在终端环境下。打开很多标签,然后在多个终端之间切换窗口会让我慢下来。尤其是当我的服务器出问题的时候,我不能浪费任何时间!
  • 当我远程连接到服务器的时候, 当突然断网的时候, 我不希望我的任何工作全部丢失

安装

ubuntu下

1
# sudo apt-get install tmux

centos等红帽系
yum install tmux

Archlinux:
sudo pacman -S tmux

tmux使用

tmux 有两个概念:

  • session
  • 窗口

一个session可以有多个窗口, 当远程连接断开的时候, session还在后台运行
窗口之间可以彼此切换, 也可以在一个屏幕上同时显示

session

让我们开始一个叫做”session”的会话,并且运行top命令

1
2
$ tmux new -s new session
$ top

然后输入CTRL-b d从此会话脱离,想要重新连接此会话,需输入:

1
$ tmux attach-session -t session

一些管理sessions的命令:

1
2
3
4
5
6
$ tmux list-session
$ tmux new-session <会话名>
$ tmux attach-session -t <会话名>
$ tmux rename-session -t <会话名>
$ tmux choose-session -t <会话名>
$ tmux kill-session -t <会话名>

窗口

在现代的GUI终端(比如 iTerm或者Konsole),一个窗口被视为一个标签。在会话中配置了我们默认的环境之后,我们就能够在一个会话中创建许多我们需要的窗口。窗口就像运行在会话中的应用程序,当我们脱离当前会话的时候,它仍在持续,让我们来看一个例子:

$ tmux new -s my_session

按下CTRL-b c

这将会创建一个新的窗口,然后屏幕的光标移向它。现在你就可以在新窗口下运行你的新应用。你可以修改你当前窗口的名字。在目前的例子里,我运行的top程序,所以top就是该窗口的名字

如果你想要重命名,只需要按下:

CTRL-b

状态条将会改变,这时你将可以重命名当前的窗口

CTRL-b <窗口号>

如果我们给窗口起了名字,我们可以使用下面的命令找到它们:

CTRL-b f

也可以列出所有窗口:

CTRL-b w

按照顺序切换到不同的窗口:

CTRL-b n(到达下一个窗口) CTRL-b p(到达上一个窗口)

想要离开一个窗口,可以输入 exit 或者:

CTRL-b &

关闭窗口之前,你需要确认一下。

多窗口

时候你在编辑器工作的同时,需要查看日志文件。在编辑的同时追踪日志真的很有帮助。Tmux可以让我们把窗口分成许多面板。举个例子,我们可以创建一个控制台监测我们的服务器,同时用编辑器构造复杂的开发环境,这样就能同时进行编译和调试了。

让我们创建另一个Tmux会话,让其以面板的方式工作。首先,如果我们在某个会话中,那就从Tmux会话中脱离出来:

CTRL-b d

开始一个叫做”panes”的新会话:

$ tmux new -s panes
你可以水平或者竖直分割一个窗口,水平分割输入:

CRTL-b "

现在你就拥有两个面板,现在我们竖直分割:

CRTL-b %

又增加了两个

在他们之间移动:

CTRL-b <光标键>