tmux 對 VPS 使用者最大的價值,不是看起來很進階,而是它能讓你的工作在 SSH 斷線後還留著。這對跑備份、部署、更新和長時間任務特別重要。
你如果不想每次都只是照著別人的畫面一步一步跟著按,卻不知道自己到底改了什麼,這篇會比較適合你。重點不是讓你背流程,而是讓你下次遇到類似情況時,還知道該怎麼自己判斷。
你會學到什麼
- 知道 tmux 為什麼是 VPS 管理很值得學的工具。
- 學會建立、切換、分割與重新連回 session。
- 降低因為連線中斷造成工作重做的風險。
- 學會自訂 .tmux.conf 提升使用體驗。
- 掌握實戰工作流程範例。
什麼情況最適合先看這篇
- 第一次自己管理 Linux 主機,想把操作做穩而不是只會貼指令的人
- 你現在正要處理 tmux 相關操作
- 你希望做完之後不只功能能用,連驗證與排錯也有概念
開始前先確認
- 先能正常 SSH 連上主機。
- 如果是正式環境,先挑一個低風險任務練習。
- 把常用快捷鍵記下來。
先提醒你一件事
VPS 最怕的不是不會下指令,而是你不知道指令會影響到哪個服務、哪個設定檔、哪個對外連線。
詳細教學與操作步驟
本文介紹 tmux (Terminal Multiplexer),這是每個 VPS 管理者必學的工具。它能讓你把一個終端機切分成多個視窗,更重要的是,它能讓你的程式在斷線後依然在背景持續執行。
為什麼 VPS 需要 tmux?
在使用 SSH 連線到 侃瑞科技 VPS 時,你是否遇過因為網路不穩斷線,導致正在跑的程式(如資料庫遷移或大型下載)強迫中斷?tmux 的「Session」機制能讓程式在伺服器背景獨立運作,即使你關掉電腦,程式依然會繼續跑。此外,它能讓你「一打二」甚至「一打四」,在同一個螢幕上看日誌同時改代碼。
一、 基礎安裝與啟動
sudo apt update && sudo apt install tmux -y
tmux
輸入 tmux 後,你會發現底部出現了一條綠色的狀態列(Status Bar),這代表你已經進入了 tmux 環境。
二、 核心概念:前綴鍵 (Prefix)
tmux 的所有指令都需要先按一個「前綴組合鍵」,預設是 Ctrl + b。之後再按對應的功能鍵。在本手冊中,我們用 Prefix -> [鍵] 來表示。
三、 Session 管理
Session 是 tmux 最重要的概念,它就像一個獨立的工作空間:
# 建立新的具名 session
tmux new -s deploy
# 列出所有 session
tmux ls
# 分離(detach)目前 session
Prefix -> d
# 重新連回最後一個 session
tmux a
# 重新連回指定的 session
tmux a -t deploy
# 刪除指定 session
tmux kill-session -t deploy
# 刪除所有 session
tmux kill-server
# 在 tmux 內切換 session
Prefix -> s (會列出所有 session 讓你選)
# 重新命名目前 session
Prefix -> $
四、 視窗 (Windows) 管理
一個 Session 裡面可以有多個 Window(像瀏覽器的分頁):
# 建立新視窗
Prefix -> c
# 切換到下一個視窗
Prefix -> n
# 切換到上一個視窗
Prefix -> p
# 切換到指定編號的視窗
Prefix -> 0 (或 1、2、3...)
# 關閉目前視窗
Prefix -> & (會確認)
# 重新命名視窗
Prefix -> ,
# 列出所有視窗
Prefix -> w
五、 區塊切割 (Panes)
- 垂直切割:
Prefix->% - 水平切割:
Prefix->" - 切換區塊:
Prefix->方向鍵 - 關閉目前區塊: 輸入
exit或Ctrl + d - 調整區塊大小:
Prefix->Ctrl + 方向鍵 - 最大化/還原目前區塊:
Prefix->z(toggle zoom) - 交換區塊位置:
Prefix->{或} - 顯示區塊編號:
Prefix->q
六、 複製模式與滾動
tmux 裡面不能直接用滑鼠滾動畫面,需要進入複製模式:
# 進入複製模式(可以滾動和選取文字)
Prefix -> [
# 在複製模式中:
# 方向鍵或 Page Up/Down 滾動
# Space 開始選取
# Enter 複製選取內容
# q 離開複製模式
# 貼上複製的內容
Prefix -> ]
七、 自訂 .tmux.conf
建立 ~/.tmux.conf,讓 tmux 更好用:
# ===== 基本設定 =====
# 把前綴鍵改成 Ctrl+a(很多人的習慣)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 啟用滑鼠支援(可以用滑鼠切換 pane、滾動)
set -g mouse on
# 從 1 開始編號(比 0 直覺)
set -g base-index 1
setw -g pane-base-index 1
# 視窗關閉後自動重新編號
set -g renumber-windows on
# 增加歷史紀錄行數
set -g history-limit 10000
# ===== 快捷鍵 =====
# 用 | 和 - 做分割(比 % 和 " 直覺)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# 用 Alt+方向鍵切換 pane(不需要 prefix)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# 快速重新載入設定
bind r source-file ~/.tmux.conf \; display "Config Reloaded!"
# ===== 外觀 =====
# 狀態列顏色
set -g status-style bg='#1a2744',fg='#d4a84b'
set -g status-left '#[bold] [#S] '
set -g status-right '#[bold] %Y-%m-%d %H:%M '
# 目前視窗標示
setw -g window-status-current-style fg='#1a2744',bg='#d4a84b',bold
# 256 色支援
set -g default-terminal "screen-256color"
設定完成後,重新載入:
# 在 tmux 內執行
tmux source-file ~/.tmux.conf
# 或用你設定的快捷鍵
Prefix -> r
八、 實戰工作流程
部署作業流程:
# 建立部署用的 session
tmux new -s deploy
# 分割成三個區塊
# 左邊:程式碼操作
# 右上:看日誌
# 右下:看系統資源
Prefix -> % # 垂直分割
Prefix -> " # 右邊再水平分割
左邊跑部署指令,右上跑 tail -f /var/log/nginx/access.log,右下跑 htop。
長時間任務(資料庫遷移、大型下載):
# 建立 session
tmux new -s migration
# 開始跑任務
mysql -u root -p database < huge_dump.sql
# 中途要離開?直接 detach
Prefix -> d
# 隔天回來繼續看
tmux a -t migration
多網站管理:
# 為每個網站建立一個 window
tmux new -s sites
Prefix -> , # 重新命名為 "site-a"
Prefix -> c # 新 window
Prefix -> , # 重新命名為 "site-b"
Prefix -> c # 新 window
Prefix -> , # 重新命名為 "monitoring"
tmux 與 screen 的差異
如果你有聽過 screen,兩者用途類似,但 tmux 有幾個優勢:
- 視窗切割更直覺(screen 的切割操作比較麻煩)
- 設定檔語法更清楚
- 狀態列自訂性更好
- 社群更活躍,Plugin 生態更豐富
如果你的 VPS 上沒有 tmux 只有 screen,基本操作對照:
| 操作 | tmux | screen |
|---|---|---|
| 新 session | tmux new -s name | screen -S name |
| Detach | Ctrl+b d | Ctrl+a d |
| Attach | tmux a -t name | screen -r name |
| 列出 session | tmux ls | screen -ls |
常見問題
Q:我在 tmux 裡滑動滾輪,為什麼沒有滾動畫面?
在 .tmux.conf 加入 set -g mouse on 即可啟用滑鼠滾動。或者用 Prefix -> [ 進入複製模式後就可以用方向鍵和 Page Up/Down 滾動。
Q:tmux 的配色怪怪的?
確認你的 .tmux.conf 有設定 set -g default-terminal "screen-256color",且你的 SSH 客戶端支援 256 色。
Q:怎麼在 tmux 的多個 pane 同時輸入同一個指令?
開啟同步輸入模式:Prefix -> : 然後輸入 setw synchronize-panes on。關閉時改成 off。這在同時管理多台機器時非常好用。
Q:SSH 斷線後 tmux session 不見了?
tmux session 只有在伺服器重開機或手動 kill 時才會消失。如果 SSH 斷線後用 tmux ls 看不到 session,可能是 tmux server 本身掛了。正常情況下 session 會一直保留。
做完後怎麼確認自己真的有設對
- 建立一個 tmux session,detach 後再 attach 回來,確認工作還在。
- 故意斷開 SSH 連線,重連後確認 tmux session 還活著。
- 測試分割視窗和切換 pane 的快捷鍵是否正常。
- 確認
.tmux.conf的自訂設定有生效。
這一題最常踩的坑
- 開了 session 卻不知道怎麼 detach 或 attach。
- 分割視窗太多,反而讓自己更亂。
- 沒有幫 session 命名,時間一久不好管理。
- 設定
.tmux.conf後忘了重新載入。 - 以為關掉 SSH 就是 detach,其實要按
Prefix + d。
如果你要往下一步走
如果你常做部署、備份或 log 監控,tmux 會和 Linux 系統維護常用指令大全 很搭。想學終端機編輯器操作,參考 Vim 與 Nano 教學。如果你準備開始自己架服務,可以直接對照侃瑞的 VPS 方案與價格 選環境。