伺服器的任務不間斷執行,就是利用了tmux的特性。就是說,一般ssh是斷開就會停止所有之前連線ssh期間執行的所有processes,而tmux的核心業務不在於把螢幕分成幾塊好看,而是它能儲存session!而且還能多端實時直播session!
瞭解tmux的安裝和使用已經理解,這個短視訊足矣!如果想試試tmux的session共享,讓別的機器或別人像直播一樣看你在命令列裡打字、操作,也用tmux一句話即可,參考這個視訊。
我萬萬沒想到,將vim打造成IDE、將指令碼不間斷執行、讓任務執行狀態多處可觀看的tmux,是這麼簡單。
一句sudo apt-get install tmux
就安裝好,一句tmux
就開啟,一句tmux new -s <session-name>
就可以建立和儲存session。超絕!
Tmux常用命令參考
#啟動新會話:
tmux [new -s 會話名 -n 視窗名]
#恢復會話:
tmux at [-t 會話名]
#列出所有會話:
tmux ls
#關閉會話:
tmux kill-session -t 會話名
#關閉所有會話:
tmux ls | grep : | cut -d. -f1 | awk `{print substr($1, 0, length($1)-1)}` | xargs kill
Tmux 常用內部命令
所謂
內部命令
,就是進入Tmux後的指令。在按下字首鍵
後的命令,一般字首鍵為Ctrl+b
.
#會話
:new<回車> 啟動新會話
s 列出所有會話
$ 重新命名當前會話
#視窗
c 建立新視窗
w 列出所有視窗
n 後一個視窗
p 前一個視窗
f 查詢視窗
, 重新命名當前視窗
& 關閉當前視窗
#窗格(分割視窗)
% 垂直分割
" 水平分割
o 交換窗格
x 關閉窗格
⍽ 左邊這個符號代表空格鍵 - 切換佈局
q 顯示每個窗格是第幾個,當數字出現的時候按數字幾就選中第幾個窗格
{ 與上一個窗格交換位置
} 與下一個窗格交換位置
z 切換窗格最大化/最小化
#調整視窗排序
swap-window -s 3 -t 1 交換 3 號和 1 號視窗
swap-window -t 1 交換當前和 1 號視窗
move-window -t 1 移動當前視窗到 1 號
#同步窗格
#這麼做可以切換到想要的視窗,輸入 Tmux 字首和一個冒號撥出命令提示行,然後輸入:
:setw synchronize-panes
#調整窗格尺寸
#如果你不喜歡預設佈局,可以重調窗格的尺寸。雖然這很容易實現,但一般不需要這麼幹。這幾個命令用來調整窗格:
PREFIX : resize-pane -D 當前窗格向下擴大 1 格
PREFIX : resize-pane -U 當前窗格向上擴大 1 格
PREFIX : resize-pane -L 當前窗格向左擴大 1 格
PREFIX : resize-pane -R 當前窗格向右擴大 1 格
PREFIX : resize-pane -D 20 當前窗格向下擴大 20 格
PREFIX : resize-pane -t 2 -L 20 編號為 2 的窗格向左擴大 20 格
Tmux無法持久儲存session問題
它雖然好用,但是缺點是關機的話session就全都消失了。要解決這點,需要安裝單獨的外掛。
這個時候你就需要Tmux-Resurrect
外掛來了,地址在這。
外掛說明裡很清楚的寫了,tmux一旦關機,就會失去一切的設定。所以還必須用外掛來解決。
安裝方法:
Tmux安裝外掛管理器TPM
和vim一樣的思路,需要先安裝tmux專屬的外掛管理器,一般都是用這個:tmux plugin manager
,即tpm。注意:文件裡面都會提到prefix + ...
,其中prefix
指的是tmux的命令字首,預設是ctrl+b
。
按照官網的做法,很簡單就安裝上了,輸入下面命令:
# 把管理器檔案安裝到`~/.tmux/plugins/tpm`之下 此前這些目錄是不存在的
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# 新建配置檔案
touch ~/.tmux.conf
vim ~/.tmux.conf
# 將下面內容複製到`~/.tmux.conf`
# List of plugins
set -g @plugin `tmux-plugins/tpm`
set -g @plugin `tmux-plugins/tmux-sensible`
# Other examples:
# set -g @plugin `github_username/plugin_name`
# set -g @plugin `git@github.com/user/plugin`
# set -g @plugin `git@bitbucket.com/user/plugin`
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run `~/.tmux/plugins/tpm/tpm`
# 在tmux執行的時候,找到任意視窗輸入下面這個完成安裝管理器:
tmux source ~/.tmux.conf
tmux安裝外掛
在tpm管理器基礎上,我們直接到~/.tmux.conf
檔案裡的List of plugins
部分,寫入外掛名稱,然後按Ctrl+b
,再按Ctrl+I
,這裡面是大寫的i。然後程式就會自動下載安裝好外掛了。
安裝tmux-resurrect
外掛
由於tmux不能持久儲存session的特性,我們需要安裝這個外掛來將session的設定完全儲存到本地,然後重啟後也能夠快速恢復視窗等設定的內容。
首先在~/.tmux.conf
檔案的List of plugins
部分加入這句話:
set -g @plugin `tmux-plugins/tmux-resurrect`
儲存好後,在tmux的任意視窗按ctrl+b
及大寫的I
,即可完成下載安裝。
用法
-
prefix + Ctrl-s
– 儲存session -
prefix + Ctrl-r
– 恢復session
Tmux中的vim等軟體顏色丟失
這是因為tmux預設TERM沒有用256color,那麼每次執行tmux時指定color即可,TERM=screen-256color-bce tmux
,或者更簡單一點,在~/.bash.profile
或者~/.zshrc
中設定別名:
alias tmux="TERM=screen-256color-bce tmux"
然後在~/.tmux.conf
檔案中加入這句話:
set -g default-terminal "xterm-256color"
Tmux中滑鼠滾屏不能用
tmux中滑鼠滾屏預設是關閉的,且不是很容易像開關一樣開啟支援。
看過了一些stackoverflow嘗試了一些解決方案,發現沒有一個管用。如果比這個還麻煩,暫時我就覺得沒有必要再折騰了,直接用原生的螢幕滾動瀏覽快捷鍵即可:Prefix + [
,然後直接用上下箭頭,或者PnUp和PnDown即可
Tmux的配置檔案
配置檔案預設位於~/.tmux.conf
.
日常使用中,字首鍵Ctrl+b
和切換視窗鍵Ctrl+o
等等,實在太麻煩了。所以改快捷鍵有時候是很必要的。
參考這篇文件。
我的配置如下:
# 基礎設定
#set -g default-terminal "screen-256color"
set -g default-terminal "xterm-256color" # recover colorful terminal
set -g display-time 3000
set -g escape-time 0
set -g history-limit 65535
set -g base-index 1
set -g pane-base-index 1
# 字首繫結 (Ctrl+a)
#set -g prefix ^a
#unbind ^b
#bind a send-prefix
# 啟用滑鼠(Tmux v2.1)
set -g mouse on
# 選中視窗
bind-key k select-pane -U
bind-key j select-pane -D
bind-key h select-pane -L
bind-key l select-pane -R
# copy-mode 將快捷鍵設定為 vi 模式
setw -g mode-keys vi
#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# Tmux Plugin Manager(Tmux v2.1)
#== TMUX PLUGIN MANAGER ==#
# Tmux Resurrect
set -g @plugin `tmux-plugins/tmux-resurrect`
# List of plugins
set -g @plugin `tmux-plugins/tpm`
set -g @plugin `tmux-plugins/tmux-sensible`
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run `~/.tmux/plugins/tpm/tpm`
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>