在 iTerm2 中使用 tmux

做为开发者,不断和服务器打交道,最烦躁的是,每次用 ssh 链接服务器时,总担忧网络不稳定致使在服务器端执行耗时的任务会被中断。有时候服务器一边在执行命令,一边又想看看服务器内存、CPU 等运行状况,这时候不得再也不打开一个终端执行 ssh 链接操做。linux

最近发现一个好工具:「tmux」,刚好能解决这些问题,今天分享出来。git

首先说一说 tmux 的好处。github

tmux 优势

  • 分屏

在 Mac 上,iterm2 也是能够作到分屏,但若是结合 iterm2 与 ssh 的话,iterm2 分屏须要不断地 ssh <server>,致使的后果就是有多个用户链接,使用 who 命令查看登陆用户数。shell

举个例子,若是是 iterm2 分屏三个,则用户链接数为:3macos

但,若是是用 tmux 的话,相同的目标,用户链接数为:1vim

  • attach

attach 能够起到保护现场的做用,不至于因 ssh 超时或者异常退出,而丧失了工做环境。bash

我作了一个测试,先在 tmux 环境下 git clone 代码。服务器

接着关闭 ssh 环境一段时间,而后我从新链接服务器,这时候发现工做环境保持状态,而且持续下载中:网络

其中原理我以为能够这么理解:tmux 运行在远程主机上,充当中介的做用。本地终端应首先 ssh 到远程主机,而后运行一个 tmux 会话,在会话内的 shell 中运行任务。当本地切断 ssh 链接时,应当先结束 tmux 会话。因为 tmux 在远程主机上运行,它能够装做 ssh 链接从未中断过。等本地终端再次登陆时,又能从新装载会话,恢复至链接切断前的状态,以达到下载从未中断的目标。session

之后咱们能够放心的把耗时的任务放在 tmux 下执行了,不再用担忧本地 ssh 断连的问题了!

安装 tmux

在 Mac 下,直接使用 brew

brew install tmux

在 Centos 7,能够直接用 yum 安装 tmux:

yum install tmux -y

但版本会比较低,这里咱们也能够直接用源代码编译安装最新版本:

# 安装 ncurses-devel 和 libevent-devel
yum -y install ncurses-devel
yum -y install libevent-devel

# 下载源代码
git clone https://github.com/tmux/tmux.git

# 编译
cd tmux && sh autogen.sh

./configure && make

# 验证版本
tmux -V

tmux next-3.1

注:

  • 若是出现 aclocal: 未找到命令

则须要下载安装 automake 后再执行 autogen.sh

yum install automake -y
  • 若是出现 make: yacc:命令未找到

则须要安装 bison:

yum install bison -y
  • 若是 make 安装不了,能够试试 make install

链接

首先将远程链接 key 证书加入 ssh-key 中,之后访问方便。

ssh-add -k key.pem

而后,咱们在 iterm2 增长一个「Profile」,在「General」加入 「Command」命令:

ssh -t username@remote_host "tmux attach -t coding01 || tmux  new -s coding01"

这个的含义是:若是远程服务器已经有 coding01 session,则直接 tmux attach 载入 coding01 session;若是不存在,则会建立一个 coding01 session。

咱们能够看看一共有几个 session:

总结

有了 tmux,咱们能够作的还有不少,包括 tmux 的配置、快捷键的学习等等,市面上还有人把 tmux 当成艺术来学习。

最后来看看我 tmux 面板,我喜欢分红三个 pane,左边用于常规使用,右上角能够放一些实时性或者有意思的操做 (好比:显示⏲️);右下角执行 top 命令能够时刻关注服务器运行状况。

用好工具,提升咱们的效率。

未完待续

参考

  1. https://gitlab.com/gnachman/iterm2/wikis/tmux-Integration-Best-Practices
  2. https://blogs.technet.microsoft.com/jessicadeen/linux/macos-ohmyzsh-tmux-vim-iterm2-powerlevel9k-badass-terminal/
  3. https://github.com/tmux/tmux
  4. https://medium.com/@gveloper/using-iterm2s-built-in-integration-with-tmux-d5d0ef55ec30
  5. https://fedoramagazine.org/4-tips-better-tmux-sessions/
相关文章
相关标签/搜索