做爲開發者,不斷和服務器打交道,最煩躁的是,每次用 ssh 鏈接服務器時,總擔憂網絡不穩定致使在服務器端執行耗時的任務會被中斷。有時候服務器一邊在執行命令,一邊又想看看服務器內存、CPU 等運行狀況,這時候不得再也不打開一個終端執行 ssh 鏈接操做。linux
最近發現一個好工具:「tmux」,剛好能解決這些問題,今天分享出來。git
首先說一說 tmux 的好處。github
在 Mac 上,iterm2 也是能夠作到分屏,但若是結合 iterm2 與 ssh 的話,iterm2 分屏須要不斷地 ssh <server>,致使的後果就是有多個用戶鏈接,使用 who 命令查看登陸用戶數。shell
舉個例子,若是是 iterm2 分屏三個,則用戶鏈接數爲:3macos
但,若是是用 tmux 的話,相同的目標,用戶鏈接數爲:1vim
attach 能夠起到保護現場的做用,不至於因 ssh 超時或者異常退出,而喪失了工做環境。bash
我作了一個測試,先在 tmux 環境下 git clone
代碼。服務器
接着關閉 ssh 環境一段時間,而後我從新鏈接服務器,這時候發現工做環境保持狀態,而且持續下載中:網絡
其中原理我以爲能夠這麼理解:tmux 運行在遠程主機上,充當中介的做用。本地終端應首先 ssh 到遠程主機,而後運行一個 tmux 會話,在會話內的 shell 中運行任務。當本地切斷 ssh 鏈接時,應當先結束 tmux 會話。因爲 tmux 在遠程主機上運行,它能夠裝做 ssh 鏈接從未中斷過。等本地終端再次登陸時,又能從新裝載會話,恢復至鏈接切斷前的狀態,以達到下載從未中斷的目標。session
之後咱們能夠放心的把耗時的任務放在 tmux 下執行了,不再用擔憂本地 ssh 斷連的問題了!
在 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
命令能夠時刻關注服務器運行狀況。
用好工具,提升咱們的效率。
未完待續