1.什么是Tmux
Tmux是一個(gè)終端復(fù)用軟件 Termial mutiplexer,用來分離terminal和session须妻。
我們經(jīng)常遇到這樣的場景,我們開啟了一個(gè)Terminal A,對應(yīng)Session A妓雾,在A中啟動(dòng)了一系列非守護(hù)進(jìn)程距糖,由于這些進(jìn)程是A的子進(jìn)程玄窝,當(dāng)我們關(guān)閉Terminal A,也就是Session A悍引,大部分進(jìn)程將會(huì)同樣被關(guān)閉恩脂,也就是關(guān)閉窗口的同時(shí),窗口打開的進(jìn)程也被關(guān)閉了趣斤。
我們可以借助Tmux將Session和Terminal分開來解決這個(gè)問題俩块。
Tmux允許在一個(gè)窗口中開啟多個(gè)Session,自由地在Session之間切換浓领,并且退出窗口不會(huì)關(guān)閉這些Session典阵。
2.使用tmux
2.1安裝Tmux
Centos
:
yum install tmux
macOS
:
brew install tmux
2.2 啟動(dòng)、進(jìn)入镊逝、分離與退出Session
啟動(dòng)tmux
//開啟一個(gè)編號(hào)自動(dòng)遞增的session
tmux
//開啟一個(gè)名為my_name的session
tmux new -s my_name
兩個(gè)命令的區(qū)別是第一個(gè)命令默認(rèn)生成從0開始的數(shù)字編號(hào)session
第二個(gè)在創(chuàng)建session時(shí)指定名稱壮啊,方便回到指定session
可以通過命令
tmux ls
來查看系統(tǒng)中后臺(tái)運(yùn)行的session名,根據(jù)session名來進(jìn)入指定session
分離session
例如我們創(chuàng)建了一個(gè)名為back
的session后就可以在里面操作,執(zhí)行了一個(gè)nohup
后臺(tái)任務(wù) 撑蒜,操作完成后我們想退出這個(gè)session但是不關(guān)閉它歹啼,就可以用分離(detach
)來將窗口分離,可以使用Ctrl + b + d
或者
tmux detach
離開back
而不影響back
,我們稍后還可以回到這個(gè)session座菠,繼續(xù)之前的任務(wù)
回到session
剛剛我們離開了session back
我們使用Terminal處理完其它事情之后狸眼,可以回到剛剛的session,還記得我們之前的命令嗎tmux ls
查看一下運(yùn)行在后臺(tái)的session
可以看到我們的back session還在健康茁壯的運(yùn)行著
使用
tmux attach -t name
來回到名為name
的session
退出Session
tmux detach
只會(huì)讓當(dāng)前session后臺(tái)運(yùn)行浴滴,如果我們確實(shí)需要退出某個(gè)session
可以直接exit
或者
tmux kill-session -t name
重命名Session
之前使用了默認(rèn)數(shù)字編號(hào)或者session起名想換一個(gè)拓萌,可以使用
tmux rename-session -t formername newname
來修改session名稱
2.3Tmux窗口擴(kuò)展和切換
前面我們都是每個(gè)session內(nèi)只用一個(gè)窗口(pane
),我們可以在一個(gè)session內(nèi)使用多個(gè)窗口來并行查看多個(gè)任務(wù)
垂直劃分
劃分為上下窗口
tmux split-window
水平劃分
劃分為左右窗口
tmux split-window -h
在窗口間移動(dòng)光標(biāo)
tmux select-pane
上下移動(dòng)
tmux select-pane -U
tmux select-pane -D
左右移動(dòng)
tmux select-pane -L
tmux select-pane -R
交換窗格位置升略。
tmux swap-pane
命令用來
# 當(dāng)前窗格上移
$tmux swap-pane -U
# 當(dāng)前窗格下移
tmux swap-pane -D
3.常用操作
3.1經(jīng)典場景
- ssh或mosh(墻裂推薦)登錄遠(yuǎn)程主機(jī)
- tmux新建或者attach到原來的工作session
- 工作
- 完成工作后detach下班
- 第二天早上回來重復(fù)
1
即可還原昨天的工作場景微王,延續(xù)workflow
- 第二天早上回來重復(fù)
3.2經(jīng)典快捷鍵
Ctrl+b %:劃分左右兩個(gè)窗格。
Ctrl+b ":劃分上下兩個(gè)窗格品嚣。
Ctrl+b <arrow key>:光標(biāo)切換到其他窗格炕倘。<arrow key>是指向要切換到的窗格的方向鍵,比如切換到下方窗格翰撑,就按方向鍵↓罩旋。
Ctrl+b ;:光標(biāo)切換到上一個(gè)窗格。
Ctrl+b o:光標(biāo)切換到下一個(gè)窗格。
Ctrl+b {:當(dāng)前窗格左移涨醋。
Ctrl+b }:當(dāng)前窗格右移瓜饥。
Ctrl+b Ctrl+o:當(dāng)前窗格上移。
Ctrl+b Alt+o:當(dāng)前窗格下移浴骂。
Ctrl+b x:關(guān)閉當(dāng)前窗格压固。
Ctrl+b !:將當(dāng)前窗格拆分為一個(gè)獨(dú)立窗口。
Ctrl+b z:當(dāng)前窗格全屏顯示靠闭,再使用一次會(huì)變回原來大小帐我。
Ctrl+b Ctrl+<arrow key>:按箭頭方向調(diào)整窗格大小。
Ctrl+b q:顯示窗格編號(hào)愧膀。
4.其它
下面是一些其他命令拦键。
# 列出所有快捷鍵,及其對應(yīng)的 Tmux 命令
$ tmux list-keys
# 列出所有 Tmux 命令及其參數(shù)
$ tmux list-commands
# 列出當(dāng)前所有 Tmux 會(huì)話的信息
$ tmux info
# 重新加載當(dāng)前的 Tmux 配置
$ tmux source-file ~/.tmux.conf