一個軟件或者工具,使用的人不少,必定是由於這個軟件或者工具解決了用戶的一個或多個痛點。有需求才有市場,tmux 也不例外。那麼 tmux 到底解決了咱們的哪些痛點呢?服務器
你有沒有遇到過如下幾種狀況,session
使用 SecureCRT 或者 XShell 等遠程鏈接到一臺服務器,而後運行須要一段時間才能跑完的程序,忽然內急,想上廁所,二話不說,按下待機按鍵,疾奔而去。等到你舒服的回來,打開電腦一看,我擦,個人ssh超時斷開了,悲了個劇,程序還須要從新跑一遍。ssh
在一個終端中編譯或者運行一個程序,沒有完成,可是又想幹其餘事情,一般的作法是再啓動一個終端或者一個tab來作(我之前一直都是這麼幹的。。),可是有沒有更好的方式呢?工具
天天上班遠程鏈接到服務器開始工做後,前一天未完成的的工做現場什麼都沒了,一切都要整理頭緒繼續開始,每次ssh後都要從新打開各類窗口或者cd到各類文件夾下,是否是很煩躁。spa
若是你遇到過以上幾種狀況,並愁於如何解決,那麼恭喜你,tmux 很是適合你。下面咱們就來看看,應用tmux 如何解決上述問題。code
介紹如何解決上述問題以前,咱們須要先來了解幾個概念。圖片
session:會話,一個會話就是咱們在 tmux 服務中啓動的一個多窗口容器。terminal
window:窗口,隸屬於 session,一個 session 中能夠存在多個 window。每一個窗口相似於iTerm2中的每一個tab。it
pane:面板,隸屬於 window,一個 window 中能夠包含多個 pane。相似於iTerm2中的pane。io
三者之間的關係以下圖所示:
tmux 中的 session 能夠 attach 和 detach,detach 能夠理解爲將當前的 terminal 隱藏到後臺運行,attach 就是打開咱們隱藏到後臺的 terminal。當ssh鏈接忽然斷開時,tmux 會默認將當前terminal detach到後臺,但並不會終止咱們在當前 terminal 上運行的程序,咱們只須要再次ssh鏈接到服務器,而後 attach 找回以前正在工做的 terminal 便可。
一切如初,是否是很爽!
建立一個session
$ tmux
執行tmux後,咱們將啓動一個默認名稱爲「 0 」的session。若是咱們想指定名稱,執行下面的命令
$ tmux new -s <name-of-session>
如何attach到已存在的session呢?
$ tmux attach
默認會attach到最先建立的session中,假如咱們建立了多個session,也能夠經過指定名稱來指定打開某個session,
$ tmux attach -t <name-of-session>
如何查看已經存在的session列表呢?
$ tmux list-session #等價於tmux ls
假如日常你須要同時打開多個tab,那麼tmux的pane也許更加適合你。它將一個window分紅了多個部分,每一個部分就是一個pane,你能夠隨時切換pane進行工做。
以下圖所示,咱們將一個window分紅了三個pane。
tmux 適用於那些常常須要鏈接到遠程服務器來進行工做的人。這樣不管你身處何處,只要你鏈接上遠程服務器 attach 後,能夠立刻繼續以前的工做。