linux下終端復用工具-tmux

什么是tmux?

Tmux是一個終端復用工具,用于在一個終端窗口中運行多個終端會話的能力。可以簡單的理解為他允許你在一個終端下模擬出多個終端來進行操作,而不是不停的打開終端標簽。尤其是對于遠程服務(wù)器而言:

  1. 運行一個腳本的時候,如果服務(wù)器斷掉當前進程被殺死,腳本就無法運行了
  2. 運行一個腳本或編輯一個文件的時候,想要切換目錄等操作就必須重新打開一個SSH連接
    如果遇到上面兩個問題都都可以求助于tmux來解決。

Tmux安裝

對于linux來說,使用對應的包管理器安裝即可:

yum install tmux

Tmux基本概念

tmux采用C/S模型構(gòu)建,輸入tmux相當于開啟了一個服務(wù)器,此時默認將新建一個會話,然后會話中默認新建一個窗口中默認新建一個面板。這就是Tmux中最重要的三個概念:

  1. 會話(session):會話就相當于一個SSH連接,默認情況下SSH連接與啟動的會話是連在一起的,打開連接就開啟了一段會話,而關(guān)閉連接不管這個會話中進程是否運行完也隨之結(jié)束。而tmux實際上就是將會話與連接解綁,連接斷開后會話并不終止而是繼續(xù)運行,等到需要的時候還可以綁定到其他連接上,而對于本機而言SSH連接也等同于打開一個終端窗口。
  2. 窗口(window):一個會話可以包含多個窗口,其實就是一個會話可以綁定到多個窗口上。窗口默認會充滿會話界面,因此這些窗口中可以運行相關(guān)性不大的任務(wù)。
  3. 面板(pane):一個窗口可以被分割為多個面板,一個窗口下的面板都處于同一個界面下,這些面板適合運行相關(guān)性高的任務(wù),以便同時觀察他們的運行情況。
    而我們使用Tmux實際上就是對這三個概念的新建、關(guān)閉、修改。

會話(session)

  1. 新建會話
tmux # 新建一個無名稱的會話,不推薦
tmux new -s demo #新建一個名稱為demo的會話,可以使用alias來創(chuàng)建別名

如果處于tmux中,終端下會出現(xiàn)一個狀態(tài)欄:

狀態(tài)欄.png

其中如果使用tmux創(chuàng)建無名會話的話,默認名稱會從0到1這樣的順序排列。
注意,在tmux會話中如果執(zhí)行這個命令彈出以下錯誤:

sessions should be nested with care, unset $TMUX to force

意思就是會話嵌套必須小心,也可以復位$TMUX來強制進行會話嵌套。當然建議還是不要進行會話嵌套,如果實在要在會話中新建一個會話的話可以使用:

ctrl+b :new

2.重命名會話
如果你使用tmux直接創(chuàng)建一個默認的會話時,其名稱是0,1,2這樣的名稱并不好記憶,此時就可以使用rename命令來重命名會話:

tmux rename-session -t old-name new-name

  1. 斷開當前會話
    其實就是講當前的窗口與該會話解綁,然當前窗口執(zhí)行其他工作,而將會話置于后臺,此時會話并不會被關(guān)閉,而是在后臺繼續(xù)運行。

tmux detach #斷開當前會話
也可以使用ctrl+b d這個快捷鍵來斷開當前會話。

  1. 進入之前的會話
    斷開會話后,如果想要接著上次留下的現(xiàn)場繼續(xù)工作,就需要接入會話了,使用attach命令來接入:
tmux attach-session -t demo #接入demo會話
tmux a -t demo  #可以使用簡寫形式 a 就相當于 attach-session
tmux a  #默認進入第一個會話
  1. 殺死會話
    當一個會話的使命完成后,就可以使用kill命令來殺死他們,kill命令有kill-pane kill-server kill-session和kill-window四個,其中kill-session就是用來殺死會話的。
tmux kill-session -t demo #殺死demo會話
tmux kill-server #關(guān)閉服務(wù)器,就相當于殺死了所有的會話
  1. 查看所有會話
    在你擁有多個會話的時候,不知道如何切換是就需要查看所有的會話了:
tmux list-session #查看所有會話
tmux ls #簡寫形式

也可以通過ctrl+b s來進入一個交互式會話列表,這里羅列了tmux管理的所有會話以及會話的窗口,你可以使用方向鍵在選中一個按下回車進入相應的會話窗口。

會話跳轉(zhuǎn).png

  1. 切換會話
    如果我們想要從一個會話中切換到另一個會話中,有三種方法,最笨的就是首先detach斷開當前會話,然后attach到你想切換的會話中。最簡單的就是使用ctrl+b s進入交互式會話列表,然后選擇一個會話。還有一個tmux給出的switch命令也可以實現(xiàn)在會話中直接切換到其他會話:

tmux switch -t session-name

總結(jié)

命令 快捷鍵 描述
tmux new -s session-name ctrl+b :new 創(chuàng)建新會話
tmux rename-session -t oldname newname ctrl+b $ 重命名會話
tmux detach ctrl+b d 斷開當前會話
tmux attach-session -t session-name 接入一個會話
tmux kill-session -t session-name 殺死一個會話
tmux list-session ctrl+b s 列出當前會話
tmux switch -t session-name 切換會話

窗口(window)

一個會話默認開啟一個窗口,但是tmux允許你新建多個窗口。這可能就是進程和協(xié)程的關(guān)系,如果對于不同的任務(wù)開啟不同的會話其開銷肯定要比在一個會話中開啟多個窗口要低。所以說一般情況下我們應該都只需要開啟一個常住的會話,在其中開啟多個窗口來管理多個任務(wù)。如果需要臨時測試一個項目的時候在開啟一個會話用完銷毀就好了。

  1. 新建窗口

tmux new-window -n test #新建一個名稱為test的窗口

也可以通過chrl+b c來新建窗口
可以在狀態(tài)欄下左下角查看窗口的狀態(tài):

窗口狀態(tài).png

  1. 關(guān)閉窗口

tmux kill-window #關(guān)閉當前窗口
tmux kill-window -t window-name/window-num #關(guān)閉某個窗口,可以是名稱也可以說編號

也可以通過chtl+b &來關(guān)閉窗口

  1. 切換窗口

tmux select-window -t window-name/window-num #切換到某一個窗口

切換窗口有很多快捷鍵 ctrl+b 0~9切換到指定窗口,ctrl+b p切換到上一個窗口,ctrl+b n切換到下一個窗口。ctrl+b w打開一個選擇列表來選擇其中一個窗口切換。

  1. 重命名窗口

tmux rename-window new-name #為當前窗口重命名

快捷鍵為ctrl+b ,來重命名當前窗口。

總結(jié)

命令 快捷鍵 描述
tmux new-window -n window-name ctrl+b c 新建窗口
tmux kill-window -t window-name/window-num ctrl+b & 關(guān)閉窗口
tmux select-window -t window-name/window-num ctrl+b 0~9/p/n/w 切換窗口
tmux rename-window new-name ctrl+b , 重命名窗口

面板操作

Tmux可以將窗口分成多個面板,每個面板下可以運行不同的命令。

  1. 劃分面板

tmux split-window #上下劃分兩個面板 ctrl+b %
tmux split-window -h #左右劃分兩個面板 ctrl+b "

  1. 移動光標

tmux select-pane -U #切換到上方面板 ctrl+b 方向鍵來實現(xiàn)
tmux select-pane -D #切換到下方面板
tmux select-pane -L #切換到左方面板
tmux select-pane -R #切換到右方面板

  1. 交換窗格位置

tmux swap-pane -U #當前面板上移 ctrl+b {
tmux swap-pane -D #當前面板下移 ctrl+b }

  1. 關(guān)閉窗格

tmux kill-pane #關(guān)閉當前窗格 ctrl+b x

總結(jié)

命令 快捷鍵 描述
tmux split-window ctrl+b " 上下劃分面板
tmux split-window -h ctrl+b % 左右劃分面板
tmux kill-pane ctrl+b x 關(guān)閉當前面板
tmux resize-pane -Z ctrl+b z 最大化面板,再次重復命令恢復正常
tmux display-panes ctrl+b q 顯示當前面板編號,在編號消失前輸入對應的數(shù)字可切換到對應面板
tmux swap-pane -U ctrl+b { 向前置換當前面板
tmux swap-pane -D ctrl+b } 向后置換當前面板
tmux select-pane -UDLR ctrl+b 方向鍵 移動光標切換面板
tmuxse select-pane -t :.+ ctrl+b o 選擇下一個面板
tmux resize-pane -UDLR 5 ctrl+b alt+方向鍵 調(diào)整面板大小
tmux clock-mode ctrl+b t 顯示時鐘

其他命令

tmux list-keys #列出所有快捷鍵
tmux list-commands #列出所有命令

參考:
tmux使用手冊

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

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

  • 轉(zhuǎn)載備注:作者主頁:薰衣草的旋律博客地址:https://www.cnblogs.com/wangqiguo/p/...
    振禮碩晨閱讀 1,662評論 0 1
  • tmux可以干什么 ssh遠程到服務(wù)器后,執(zhí)行一個費時的操作,斷開ssh后任務(wù)可以繼續(xù)執(zhí)行,不會中斷 ssh到遠程...
    比軒閱讀 14,709評論 2 61
  • 你是否曾經(jīng)開過一大堆的 Terminal?有沒有把它們都保存下來的沖動?Tmux 的Session就是做這件事情的...
    qgpmztmf閱讀 10,813評論 0 3
  • Linux終端復用軟件tmux是通過一個終端登錄遠程主機并運行后,在其中可以開啟多個控制臺的終端復用軟件,用他來制...
    疾飛閱讀 654評論 0 1
  • 前言 我們?yōu)槭裁葱枰制疗髂兀?對于這個問題,我想大家肯定都有自己的看法。 主流的觀點是這樣的,對于生活在Linu...
    craneyuan閱讀 7,897評論 0 14

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