Linux/UNIX 下終端複用利器 tmux

簡介

tmux 是一個終端複用器類自由軟件,功能相似 GNU Screen,但使用 BSD 許可發佈。用戶能夠經過 tmux 在一個終端內管理多個分離的會話,窗口及面板,對於同時使用多個命令行,或多個任務時很是方便。 --- 維基百科java

基本概念

tmux 的三個重要概念:會話(session)窗口(window)窗格(pane)nginx

一個會話(session) 能夠有多個窗口(window),一個窗口(window)又能夠有多個窗格(pane)centos

安裝

# macOS
$ brew install tmux

# centos
$ yum install tmux

前綴鍵

tmux 的快捷鍵都要經過前綴鍵才能夠使用。默認的前綴鍵是Ctrl+b,即先按下Ctrl+b進入快捷鍵模式,再按快捷鍵纔會生效。bash

舉例:分離會話的快捷鍵是Ctrl+b d。用法是,在 tmux 窗口下,先按下Ctrl+b,再按下d,就會分離會話,進入正常命令行模式。服務器

會話管理

  • tmux:建立一個無名稱的會話
  • tmux new -s daodaotest:建立名爲 daodaotest 的會話
  • tmux new -s daodaotest -d:在後臺建立名爲 daodaotest 的會話
  • tmux detach:分離會話
  • tmux ls:顯示會話列表
  • tmux a:接入最後一次會話
  • tmux a -t daodaotest:接入 daodaotest 會話
  • tmux kill-session:關閉最後一次會話
  • tmux kill-session -t 0:使用會話編號殺死會話
  • tmux kill-session -t daodaotest:使用會話名稱殺死會話
  • tmux kill-session -a -t daodaotest:關閉除 daodaotest 外的全部會話
  • tmux kill-server:關閉全部會話
  • tmux switch -t 0:使用會話編號切換會話
  • tmux switch -t daodaotest:使用會話名稱切換會話
  • tmux rename-session -t daodaotest daodaotest2:重命名會話名稱
  • exitCtrl+d:退出會話

會話快捷鍵session

  • Ctrl+b s:列出會話,可進行切換
  • Ctrl+b d:分離當前會話
  • Ctrl+b $:重命名當前會話

窗口管理

  • tmux new-window:新建一個新窗口
  • tmux new-window -n daodaotest:新建一個 daodaotest 名稱的新窗口
  • tmux select-window -t 0~9:切換到指定編號的窗口
  • tmux select-window -t daodaotest:切換到 daodaotest 的窗口
  • tmux rename-window daodaotest2:重命名當前窗口爲:daodaotest2

窗口快捷鍵maven

  • Ctrl+b c:新建一個新窗口
  • Ctrl+b ,:重命名當前窗口
  • Ctrl+b w:列出全部窗口,可進行切換
  • Ctrl+b n:進入下一個窗口
  • Ctrl+b p:進入上一個窗口
  • Ctrl+b l:進入以前操做的窗口
  • Ctrl+b 0~9:選擇編號0~9對應的窗口
  • Ctrl+b .:修改當前窗口索引編號
  • Ctrl+b ':切換至指定編號(可大於9)的窗口
  • Ctrl+b f:根據顯示的內容搜索窗格
  • Ctrl+b &:關閉當前窗口

窗格管理

  • tmux sp -h:水平方向建立窗格
  • tmux sp:垂直方向建立窗格
  • tmux select-pane -U :光標切換到上方窗格
  • tmux select-pane -D :光標切換到下方窗格
  • tmux select-pane -L :光標切換到左邊窗格
  • tmux select-pane -R :光標切換到右邊窗格
  • tmux swap-pane -U :當前窗格上移
  • tmux swap-pane -D :當前窗格下移

窗格快捷鍵spa

  • Ctrl+b %:水平方向建立窗格
  • Ctrl+b ":垂直方向建立窗格
  • Ctrl+b Up|Down|Left|Right:根據箭頭方向切換窗格
  • Ctrl+b q:顯示窗格編號
  • Ctrl+b o:順時針切換窗格
  • Ctrl+b }:與下一個窗格交換位置
  • Ctrl+b {:與上一個窗格交換位置
  • Ctrl+b x:關閉當前窗格
  • Ctrl+b space(空格鍵):從新排列當前窗口下的全部窗格
  • Ctrl+b !:將當前窗格置於新窗口
  • Ctrl+b Ctrl+o:逆時針旋轉當前窗口的窗格
  • Ctrl+b t:在當前窗格顯示時間
  • Ctrl+b z:放大當前窗格(再次按下將還原)
  • Ctrl+b i:顯示當前窗格信息

使用場景

後臺運行程序

在作自動化部署腳本時,遠程執行目標服務器 xStart.sh 腳本,來後臺啓動 java 應用。腳本以下:命令行

# 啓動應用
start() {
  ......
  if [ "X$pid" = "X" ]; then
      # 關閉以前終端
      tmux kill-session -t $SYSTEM_NAME-$PORT
      # 建立終端
      tmux new -s $SYSTEM_NAME-$PORT -d
      # 終端啓動服務
      tmux send -t $SYSTEM_NAME-$PORT "cd $PIDDIR;nohup java $JAVA_OPTS -jar $SYSTEM_NAME*.jar $SPRING_ACTIVE --server.port=$PORT $EXT_OPTS >/dev/null 2>&1 &" ENTER
  else
      echo "$SYSTEM_NAME is already running."
      exit 1
  fi
  ......
}

大量數據遷移

在遷移 maven 私服 nexus 時,nexus 數據大概有 13G 左右,在使用scp進行遷移,終端超時關閉後就會中斷。操做命令以下:日誌

# 建立 tmux 會話
$ tmux new -s nexus-scp

# 在 tmxu 會話中,執行 scp 命令
$ scp -R nexus@x.x.x.x:~/nexus .

# 分離會話,後臺執行便可
$ Ctrl+b d

快速恢復工做現場

平常工做中,天天都要查詢某些日誌或者監控某些指標時,能夠經過tmux保存現場,下次快速恢復工做現場,提升工做效率。

nginx 操做現場

相關文章
相關標籤/搜索