在 iTerm2 中使用 tmux

原作者:coding01,原文鏈接:https://juejin.im/post/5de8fe196fb9a0161e591dcb

作為開發(fā)者,不斷和服務(wù)器打交道,最煩躁的是,每次用 ssh 連接服務(wù)器時(shí),總擔(dān)心網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致在服務(wù)器端執(zhí)行耗時(shí)的任務(wù)會(huì)被中斷。有時(shí)候服務(wù)器一邊在執(zhí)行命令,一邊又想看看服務(wù)器內(nèi)存、CPU 等運(yùn)行情況,這時(shí)候不得不再打開一個(gè)終端執(zhí)行 ssh 連接操作。

最近發(fā)現(xiàn)一個(gè)好工具:「tmux」,恰好能解決這些問題,今天分享出來。

首先說一說 tmux 的好處。

tmux 優(yōu)點(diǎn)

[if !supportLists]·????????[endif]分屏

在 Mac 上,iterm2 也是可以做到分屏,但如果結(jié)合 iterm2 與 ssh 的話,iterm2 分屏需要不斷地 ssh ,導(dǎo)致的后果就是有多個(gè)用戶連接,使用 who 命令查看登錄用戶數(shù)。

舉個(gè)例子,如果是 iterm2 分屏三個(gè),則用戶連接數(shù)為:3

但,如果是用 tmux 的話,相同的目標(biāo),用戶連接數(shù)為:1

[if !supportLists]·????????[endif]attach

attach 可以起到保護(hù)現(xiàn)場的作用,不至于因 ssh 超時(shí)或者異常退出,而喪失了工作環(huán)境。

我做了一個(gè)測試,先在 tmux 環(huán)境下git clone 代碼。

接著關(guān)閉 ssh 環(huán)境一段時(shí)間,然后我重新連接服務(wù)器,這時(shí)候發(fā)現(xiàn)工作環(huán)境保持狀態(tài),并且持續(xù)下載中:

其中原理我覺得可以這么理解:tmux 運(yùn)行在遠(yuǎn)程主機(jī)上,充當(dāng)中介的作用。本地終端應(yīng)首先 ssh 到遠(yuǎn)程主機(jī),然后運(yùn)行一個(gè) tmux 會(huì)話,在會(huì)話內(nèi)的 shell 中運(yùn)行任務(wù)。當(dāng)本地切斷 ssh 連接時(shí),應(yīng)當(dāng)先結(jié)束 tmux 會(huì)話。由于 tmux 在遠(yuǎn)程主機(jī)上運(yùn)行,它可以裝作 ssh 連接從未中斷過。等本地終端再次登錄時(shí),又能重新裝載會(huì)話,恢復(fù)至連接切斷前的狀態(tài),以達(dá)到下載從未中斷的目標(biāo)。

以后我們可以放心的把耗時(shí)的任務(wù)放在 tmux 下執(zhí)行了,再也不用擔(dān)心本地 ssh 斷連的問題了!

安裝 tmux

在 Mac 下,直接使用brew

brew install tmux

復(fù)制代碼

在 Centos 7,可以直接用yum 安裝 tmux:

yum install tmux -y

復(fù)制代碼

但版本會(huì)比較低,這里我們也可以直接用源代碼編譯安裝最新版本:

# 安裝 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


# 驗(yàn)證版本

tmux -V


tmux next-3.1

復(fù)制代碼

注:

[if !supportLists]·????????[endif]如果出現(xiàn) aclocal: 未找到命令

則需要下載安裝 automake 后再執(zhí)行 autogen.sh

yum install automake -y

復(fù)制代碼

[if !supportLists]·????????[endif]如果出現(xiàn) make: yacc:命令未找到

則需要安裝 bison:

yum install bison -y

復(fù)制代碼

[if !supportLists]·????????[endif]如果 make 安裝不了,可以試試 make install

連接

首先將遠(yuǎn)程連接 key 證書加入 ssh-key 中,以后訪問方便。

ssh-add -k key.pem

復(fù)制代碼

然后,我們在 iterm2 增加一個(gè)「Profile」,在「General」加入 「Command」命令:

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

復(fù)制代碼

這個(gè)的含義是:如果遠(yuǎn)程服務(wù)器已經(jīng)有 coding01 session,則直接 tmux attach 載入 coding01 session;如果不存在,則會(huì)創(chuàng)建一個(gè) coding01 session。

我們可以看看一共有幾個(gè) session:

總結(jié)

有了 tmux,我們可以做的還有很多,包括 tmux 的配置、快捷鍵的學(xué)習(xí)等等,市面上還有人把 tmux 當(dāng)成藝術(shù)來學(xué)習(xí)。

最后來看看我 tmux 面板,我喜歡分成三個(gè) pane,左邊用于常規(guī)使用,右上角可以放一些實(shí)時(shí)性或者有意思的操作 (比如:顯示??);右下角執(zhí)行 top 命令可以時(shí)刻關(guān)注服務(wù)器運(yùn)行情況。

用好工具,提高我們的效率。

未完待續(xù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • tmux可以干什么 ssh遠(yuǎn)程到服務(wù)器后,執(zhí)行一個(gè)費(fèi)時(shí)的操作,斷開ssh后任務(wù)可以繼續(xù)執(zhí)行,不會(huì)中斷 ssh到遠(yuǎn)程...
    比軒閱讀 14,708評論 2 61
  • iTerm2 已經(jīng)整合了 tmux,這意味著什么? 通常情況下,當(dāng)你使用 tmux 的時(shí)候,會(huì)在一個(gè)「物理」窗口(...
    悅?cè)A閱讀 23,344評論 1 14
  • 一、簡介 Tmux是一個(gè)優(yōu)秀的終端復(fù)用軟件,類似GNU Screen,但來自于OpenBSD,采用BSD授權(quán)。使用...
    風(fēng)吹我已散博客閱讀 7,941評論 0 3
  • [if !supportLists]1.1.1[endif]安裝環(huán)境 redis是C語言開發(fā),安裝redis需要先...
    三萬_chenbing閱讀 667評論 0 1
  • 我不能言說 我不能言說的 是萬年之前氫氣氧氣 化為了我們?nèi)缃竦纳眢w 那時(shí) 我們的祖先 為日出歡呼 為每一次狩獵舞蹈...
    麋鹿簡森閱讀 363評論 0 0

友情鏈接更多精彩內(nèi)容