在 iTerm2 中使用 tmux

作爲開發者,不斷和服務器打交道,最煩躁的是,每次用 ssh 連接服務器時,總擔心網絡不穩定導致在服務器端執行耗時的任務會被中斷。有時候服務器一邊在執行命令,一邊又想看看服務器內存、CPU 等運行情況,這時候不得不再打開一個終端執行 ssh 連接操作。

最近發現一個好工具:「tmux」,恰好能解決這些問題,今天分享出來。

首先說一說 tmux 的好處。

tmux 優點

  • 分屏

在 Mac 上,iterm2 也是可以做到分屏,但如果結合 iterm2 與 ssh 的話,iterm2 分屏需要不斷地 ssh ,導致的後果就是有多個用戶連接,使用 who 命令查看登錄用戶數。

舉個例子,如果是 iterm2 分屏三個,則用戶連接數爲:3

但,如果是用 tmux 的話,相同的目標,用戶連接數爲:1

  • attach

attach 可以起到保護現場的作用,不至於因 ssh 超時或者異常退出,而喪失了工作環境。

我做了一個測試,先在 tmux 環境下 git clone 代碼。

接着關閉 ssh 環境一段時間,然後我重新連接服務器,這時候發現工作環境保持狀態,並且持續下載中:

其中原理我覺得可以這麼理解:tmux 運行在遠程主機上,充當中介的作用。本地終端應首先 ssh 到遠程主機,然後運行一個 tmux 會話,在會話內的 shell 中運行任務。當本地切斷 ssh 連接時,應當先結束 tmux 會話。由於 tmux 在遠程主機上運行,它可以裝作 ssh 連接從未中斷過。等本地終端再次登錄時,又能重新裝載會話,恢復至連接切斷前的狀態,以達到下載從未中斷的目標。

以後我們可以放心的把耗時的任務放在 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/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章