本文介紹終端復用工具tmux,當然此類工具比較好的還有有些系統自帶的screen。
如果僅僅只是多標籤的功能,那麼putty結合一些工具也可以做到,或者乾脆使用xshell,當然tmux此類工具不僅僅是那麼簡單。另外乙個選擇使用tmux/screen工具的原因是,有時我們會經常需要ssh或者telent遠端登入到linux伺服器,有一些任務需要長時間執行,比如系統備份、資料傳輸等。通常情況下我們都是開乙個遠端終端視窗,因為執行時間比較長,一般需要等待它執行完畢,在此過程中不能關閉視窗或者網路原因斷開連線,斷開之後就game over了。這個功能就有點類似nohup
和setsid
命令的實現了,而tmux/screen則集nohup/setsid和多標籤於一身。廢話少說,我們接下來看如何安裝使用它。
ubuntu
sudo apt install tmux
redhat/centos
yum install tmux
快速使用
tmux new-session -s name #建立新的session,session名為name
ctrl+b c 建立新的視窗
ctrl+b n 切換到下乙個視窗
ctrl+b p 切換到上乙個視窗
ctrl+b 1 切換到1號視窗
ctrl+b d 脫離回話,回到原終端
tmux ls 顯示當前所有session
tmux a -t name 進入name這個回話
tmux kill-session -t name 介紹回話,裡面執行的所有程式會一起被結束
tmux巢狀 ctrl+b+b 再發指令就是傳送到內層視窗
幾個名詞
tmux主要包括以下幾個模組:
session
會話:乙個伺服器可以包含多個會話
window
視窗:乙個會話可以包含多個視窗
pane
面板:乙個視窗可以包含多個面板[強悍的分屏]
小試牛刀
列出了tmux的幾個基本模組之後,就要來點實實在在的乾貨了,和screen
預設啟用控制台的ctrl+a
不同,tmux預設的是ctrl+b
,使用快捷鍵之後就可以執行一些相應的指令了。當然如果你不習慣使用ctrl+b
,也可以在~/.tmux
檔案中加入以下內容把快捷鍵變為ctrl+a
:
# set prefix key to ctrl-a
unbind-key c-b
set-option -g prefix c-a
列出當前回話、連線回話
# tmux ls
0: 3 windows (created mon jul 2 16:50:03 2017) [150x40]
# tmux attach -t 0
以下所有的操作都是啟用控制台之後,即鍵入ctrl+b
前提下才可以使用的命令【這裡假設快捷鍵沒改,改了的話則用ctrl+b
】。
基本操作:
?列出所有快捷鍵;按q返回
d脫離當前會話,可暫時返回shell介面,輸入tmux attach能夠重新進入之前會話
s選擇並切換會話;在同時開啟了多個會話時使用
d選擇要脫離的會話;在同時開啟了多個會話時使用
:進入命令列模式;此時可輸入支援的命令,例如kill-server所有tmux會話
[複製模式,游標移動到複製內容位置,空格鍵開始,方向鍵選擇複製,回車確認,q/esc退出
]進入貼上模式,貼上之前複製的內容,按q/esc退出
~列出提示資訊快取;其中包含了之前tmux返回的各種提示資訊
t顯示當前的時間
ctrl+z
掛起當前會話
視窗操作:
c建立新視窗
&關閉當前視窗
數字鍵切換到指定視窗
p切換至上一視窗
n切換至下一視窗
l前後視窗間互相切換
w通過視窗列表切換視窗
,重新命名當前視窗,便於識別
.修改當前視窗編號,相當於重新排序f
面板操作:
「將當前面板上下分屏
%將當前面板左右分屏
x關閉當前分屏
!將當前面板置於新視窗,即新建乙個視窗,其中僅包含當前面板
ctrl+方向鍵
以1個單元格為單位移動邊緣以調整當前面板大小
alt+方向鍵
以5個單元格為單位移動邊緣以調整當前面板大小
空格鍵可以在預設面板布局中切換,試試就知道了
q顯示面板編號
o選擇當前視窗中下乙個面板
方向鍵移動游標選擇對應面板
向後置換當前面板
alt+o
逆時針旋轉當前視窗的面板
ctrl+o
順時針旋轉當前視窗的面板
ztmux 1.8新特性,最大化當前所在面板
可以使用 tmux 命令在乙個會話中分割視窗,改變布局,甚至開啟程式。完成這些操作的關鍵是使用-t
target 開關。
當有乙個命名 tmux 會話後,可以這樣與它進行關聯:
$ tmux attach -t [session_name]
我們使用-t
開關將命令導向到相應的 tmux 會話。假設新建了乙個命名為development的會話:
$ tmux new -s development
可以通過 tmux 命令對其視窗進行水平分割:
$ tmux split-window -h -t development
當與該會話關聯後,可以看到該會話的視窗被分割成了水平兩個窗格了。
# scripting/development
tmux split-window -v -t development
也可以指定分割窗格所佔的百分比:
# scripting/development
tmux split-window -v -p 10 -t development
也可以選擇視窗使用的布局:
# scripting/development
tmux select-layout -t development main-horizontal
此時,可以對首視窗進行分割和傳送命令了。
每個視窗都有乙個編號,其基編號由set base-index
設定,而視窗中的每個窗格也有乙個編號,其基編號由setw pane-base-index
設定。要指定特定的視窗和窗格,使用格式:[session]:[window].[pane]
,如development:1.2
。因此,在會話的首視窗的第二個窗格中切換到專案目錄:
# scripting/development
tmux send-keys -t development:1.2 'cd ~/devproject' c-m
行末的c-m是ctrl-m,表示傳送乙個回車鍵。
tmux new-session -s name1 -d #建立新的session,session名為name1,並立即脫離
tmux send-keys -t name1 'nslookup g.cn' c-m #執行命令
tmux new-window -t name1 #開乙個新視窗
tmux send-keys -t name1 'ping 8.8.8.8' c-m #執行命令
tmux new-window -t name1
tmux send-keys -t name1 'ps -ef' c-m
tmux new-window -t name1
tmux send-keys -t name1 'netstat -antup' c-m
tmux 無法建立會話 Tmux快速入門教程
tmux 是乙個終端復用器,它使使用者可以在乙個終端介面內管理多個會話 視窗和窗格。tmux 有主要兩個用途 tmux 採用 client server模型,主要有四個模組 執行 tmux 命令時,即開啟了乙個服務,並建立了乙個會話 視窗和窗格。sudo apt install tmux tmux ...
Tmux快速使用
很多時候我們需要通過ssh連線伺服器進行一些操作,費了好長時間調好了程式,一頓飯的功夫ssh超時了 broken pipe 重新連上去正在執行的程式也都沒了,一切又得從頭再來。這個時候你就非常需要用到tmux了,用tmux在伺服器上建立乙個會話 session 在該會話中進行操作,你可以隨時隨地斷開...
使用 tmux 視窗分割
tmux 可以利用 epel yum install 安裝 常用方法 tmux 進入tmux ctrl c 建立乙個新的視窗 ctrl b q 顯示分隔視窗的編號 c b w 通過上下鍵選擇當前視窗中開啟的會話 進入某個session tmux attach t 重繪視窗大小 tmux at d 殺...