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
:重命名會話名稱exit
或 Ctrl+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 操做現場