Linux終端複用工具 tmux

 

簡介

Terminal Multiplexer (From WIKIPEDIA) - A terminal multiplexer is a software application that can be used to multiplex several separate pseudoterminal-based login sessions inside a single terminal display, terminal emulator window, PC/workstation system console, or remote login session, or to detach and reattach sessions from a terminal.shell

Tmux 是 Linux 平臺下一款 終端複用 的工具,其能夠在單一的終端上實現多任務管理,經過簡單的操做進行任務之間的切換,且任務的執行不受終端退出等意外狀況的影響。vim

Session(會話)、Window(窗口)、Pane(窗格):tmux使用session來區分不一樣的工做環境,一個session能夠包含多個window,一個window能夠被分割成多個pane服務器

安裝與使用

sudo apt-get install tmux
  • 安裝完成後,在終端輸入 tmux 命令就能夠進入tmux環境
  • 設置 tmux 隨終端自啓動:終端窗口右鍵 -> Profile Preferences -> Command -> 勾選 "Run a custom command instead of my shell" -> 在 Custom command 中填入 tmux

基本配置

  • 在 tmux 環境中,使用功能命令以前都須要一個前綴,默認爲 Ctrl + b
  • 這兩個鍵距離較遠,操做起來不方面,能夠在 tmux 的配置文件(~/.tmux.conf,若無此文件,需手動添加)中自定義前綴組合快捷鍵,如 Ctrl + a。
vim ~/.tmux.conf
1 # 解綁 Ctrl + b 快捷鍵
2 unbind C-b
3 
4 # 更換前綴快捷鍵爲 Ctrl + a
5 set -g prefix C-a
  • 配置完 ~/.tmux.conf 後,重啓 tmux 生效,或者進入命令行模式(前綴 + : ),輸入:
source-file ~/.tmux.conf
  • 若不想每次每次配置完都用上述代碼,可在配置文件中自定義快捷鍵,如 前綴 + r
1 # 將快捷鍵 r 設置爲加載配置文件,並在狀態欄顯示「Config Reloaded」信息
2 bind-key r source-file ~/.tmux.conf \; display-message "Config Reloaded!"

快捷鍵與進階配置

 Pane命令

1. 建立 panesession

  • 終端中輸入 tmux 命令,默認建立了一個 session、一個 window 和一個 pane,此時還沒達到終端複用的目的,需建立額外的 pane
  • 默認:前綴 + 」 建立垂直分割(上下)的 pane,前綴 + % 建立水平分割(左右)的 pane
  • 可在配置文件中自定義快捷鍵,如 前綴 + v 垂直分割,前綴 + h 水平分割
1 # 重定義分隔窗格快捷鍵
2 unbind '"'
3 unbind %
4 bind-key v split-window -h
5 bind-key h split-window -v

2. 切換 paneapp

  • 激活不一樣 pane,即在 pane 間作切換,默認爲:前綴 + 上下左右鍵

3. 關閉 panesocket

  • 方法一:在該 pane 中輸入 exit 命令
  • 方法二:快捷鍵 前綴 + x
  • 方法三:快捷鍵 Ctrl + d

4. 全屏顯示 paneide

  • 前綴 + z 的快捷鍵可以使當前 pane 全屏顯示,再用一次 前綴 + z 可返回以前的狀態

Window 命令

1. 建立 window工具

  • 前綴 + c 可建立一個 window,狀態欄左側會有提示符,表明不一樣的 window

2. 切換 windowspa

  • 前綴 + p:切換至前一窗口
  • 前綴 + n:切換至後一窗口
  • 前綴 + 數字
  • 前綴 + l (L的小寫): 在相鄰的window切換
  • 前綴 + w: 列出當前 session 中全部 window,經過上下鍵切換

3. 關閉 window命令行

  • 前綴 + &,會給出提示是否關閉當前窗口,按下 y 確認便可

Session 命令

0. 原理

在 tmux 實現中,會話實際由 tmux 客戶端( client )顯示在屏幕上,而全部的會話均由一個惟一的 tmux 服務器( server )進行管理,當用戶創建第一個 tmux 會話時,tmux server 即啓動,而當全部的會話都被註銷時,tmux server 則自動中止,從而退出 tmux。tmux client 和 server 均爲獨立的進程,它們之間經過一個位於 /tmp 目錄下的 socket 進行交互。當用戶從原始的終端經過 tmux 命令建立一個會話或從新 attach 一個會話時,tmux 即在當前終端下創建一個 tmux client,用於顯示進入的 tmux 會話,當用戶在 tmux 中進行會話切換時,實際是將當前的 tmux client 從新 attach 到新的會話中( 從而顯示新的會話 ),而當用戶選擇 detach 當前會話時,實際是取消 tmux client 與當前會話的綁定( 從而再也不顯示該會話 ),不管是上述哪種狀況,實際上只是 tmux client 再也不顯示某一個會話,而不是關閉會話,會話仍會在後臺運行,由 tmux server 進行管理。當從 tmux 退出至原始的終端時,該終端下創建的 tmux client 即自動退出。

 

1. 建立 session

tmux new -s session_name [-n window_name] //建立並進入一個名爲 session_name 的會話,其擁有一個名爲 window_name 的窗口

2. 離開 session

  • 離開(detach)當前會話,回到 Shell 終端
    • 前綴 + d
    • 終端:tmux detach

3. 進入 session

tmux attach [-t session_name]  //進入一個名爲 session_name 的會話,attch也能夠用 a 或 at 代替
  • 若不指定參數 -t,默認進入用戶最近離開的會話

4. 查詢 session

  • Shell 終端環境中
    • tmux ls
  • tmux 會話環境中
    • 前綴 + s

5. 註銷 session

  • 終端環境中
tmux kill-session -t session-name   //刪除名爲 session-name 的會話
tmux kill-server    //刪除全部的會話
  • 會話環境中
    • 先進入命令行模式(前置 + :),再輸入 kill-session [-t session_name]

6. 重命名 session

  • 終端環境中
tmux rename -t old_session_name  new_session_name
  • 會話環境中
    • 前綴 + $
相關文章
相關標籤/搜索