tmux快速入門 巢狀 視窗分割 批處理

2021-08-20 02:07:28 字數 4175 閱讀 6584

本文介紹終端復用工具tmux,當然此類工具比較好的還有有些系統自帶的screen。

如果僅僅只是多標籤的功能,那麼putty結合一些工具也可以做到,或者乾脆使用xshell,當然tmux此類工具不僅僅是那麼簡單。另外乙個選擇使用tmux/screen工具的原因是,有時我們會經常需要ssh或者telent遠端登入到linux伺服器,有一些任務需要長時間執行,比如系統備份、資料傳輸等。通常情況下我們都是開乙個遠端終端視窗,因為執行時間比較長,一般需要等待它執行完畢,在此過程中不能關閉視窗或者網路原因斷開連線,斷開之後就game over了。這個功能就有點類似nohupsetsid命令的實現了,而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 命令在乙個會話中分割視窗,改變布局,甚至開啟程式。完成這些操作的關鍵是使用-ttarget 開關。

當有乙個命名 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-mctrl-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 殺...