Tmux 介紹與用法

Votes

Upvotes

0

Upvotes: 0

Downvotes

0

Downvotes: 0

Net votes

+0

Prompt

tmux 的介紹與用法

Response

tmux 是一個終端機多工器(terminal multiplexer)。 它讓你在一個 terminal 裡同時開很多工作區,而且就算你把視窗關掉、SSH 斷線,工作也可以繼續留著。

你可以把它想成:

  • session:一個 tmux 工作空間
  • window:像分頁
  • pane:分割視窗的小區塊

tmux 能做什麼

最常見的用途有這些:

  • 一個 SSH 連線裡同時跑很多任務
  • 視窗分割,一邊寫程式、一邊看 log、一邊跑指令
  • 遠端工作時避免因斷線而中斷
  • 長時間執行程式,例如訓練模型、跑 server、跑爬蟲
  • 保留工作環境,下次接回來繼續用

例如你可以:

  • pane 1 跑 nvim
  • pane 2 跑 python train.py
  • pane 3 看 htop
  • pane 4 看 tail -f logs/app.log

基本概念

1. session

一個完整的 tmux 工作空間。

例如你可以有:

  • dev:開發用
  • server:遠端主機維護
  • train:模型訓練

2. window

session 裡面的分頁,類似瀏覽器 tab。

3. pane

window 裡面再切成多塊。

安裝

macOS

brew install tmux

Ubuntu / Debian

sudo apt install tmux

Fedora

sudo dnf install tmux

Arch / Asahi Fedora 類環境你常見的概念也是差不多

sudo pacman -S tmux

啟動 tmux

直接輸入:

tmux

這會開一個新的 session。

也可以指定名稱:

tmux new -s dev

這樣 session 名字叫 dev

tmux 最重要的操作邏輯

tmux 預設有一個前綴鍵(prefix key),預設是:

Ctrl-b

意思是很多快捷鍵都要先按 Ctrl-b,再按下一個鍵。

例如:

  • Ctrl-b c:新增 window
  • Ctrl-b %:垂直分割
  • Ctrl-b ":水平分割

最常用指令

建立新 session

tmux new -s dev

查看所有 sessions

tmux ls

重新接回 session

tmux attach -t dev

離開但不關掉 session

按:

Ctrl-b d

這叫 detach

關掉某個 session

tmux kill-session -t dev

關掉全部 tmux

tmux kill-server

window 操作

新增 window

Ctrl-b c

切到下一個 window

Ctrl-b n

切到上一個 window

Ctrl-b p

選 window

Ctrl-b 0
Ctrl-b 1
Ctrl-b 2

重新命名 window

Ctrl-b ,

關掉目前 window

直接在那個 shell 裡輸入:

exit

pane 操作

垂直分割

Ctrl-b %

水平分割

Ctrl-b "

在 pane 之間切換

Ctrl-b 方向鍵

關掉目前 pane

exit

調整 pane 大小

先按 prefix,再按:

Ctrl-b Ctrl-方向鍵

有些環境也常用:

Ctrl-b :
resize-pane -L 5
resize-pane -R 5
resize-pane -U 5
resize-pane -D 5

將 pane 放大/還原

Ctrl-b z

這個很好用。

detach 與 attach

這是 tmux 最核心的功能。

detach

你離開 tmux,但裡面程式照跑:

Ctrl-b d

attach 回來

tmux attach

如果有很多 session:

tmux attach -t dev

這對 SSH 很重要。 例如你在遠端跑訓練:

tmux new -s train
python train.py

中途網路斷掉沒關係,之後再登入:

tmux attach -t train

就能接回去。

複製模式(copy mode)

tmux 可以像 pager 一樣往上捲、複製內容。

進入 copy mode:

Ctrl-b [

進去後你可以用方向鍵、PageUp/PageDown、Vi 風格移動。

離開通常按:

q

如果你有開 vi 風格設定,會更順手。

很實用的工作流程範例

1. 寫程式

tmux new -s project

分成三塊:

  • 左邊:nvim
  • 右上:git status / lazygit
  • 右下:python main.py

2. 遠端 server 維護

tmux new -s server

開幾個 window:

  • window 1:shell 操作
  • window 2:htop
  • window 3:tail -f /var/log/...
  • window 4:部署指令

3. 長時間訓練

tmux new -s exp1
python train.py > train.log 2>&1

然後 detach,之後再回來看。

常見指令整理

tmux new -s dev          # 新建 session
tmux ls                  # 列出 sessions
tmux attach -t dev       # 接回 session
tmux kill-session -t dev # 刪除 session
tmux kill-server         # 關掉所有 tmux

快捷鍵(預設 prefix = Ctrl-b):

Ctrl-b c      新增 window
Ctrl-b n      下一個 window
Ctrl-b p      上一個 window
Ctrl-b %      垂直分割 pane
Ctrl-b "      水平分割 pane
Ctrl-b 方向鍵 切換 pane
Ctrl-b d      detach
Ctrl-b z      放大/還原 pane
Ctrl-b [      copy mode
Ctrl-b ,      重新命名 window

為什麼很多人愛用 tmux

因為它有這幾個很強的點:

  • 穩定:斷線不怕
  • 輕量:比圖形化 terminal 管理更省資源
  • 適合遠端:特別適合 SSH
  • 高度可自訂
  • 很適合開發者工作流

新手最容易搞混的地方

1. 我關掉 terminal,tmux 會不會一起死?

不一定。 如果你是 detach,tmux 會留著。 如果你直接把整個 session 裡最後一個 shell exit 掉,tmux session 就會結束。

2. tmux 跟 terminal 分頁有什麼差?

terminal 分頁通常是本機 GUI 功能;tmux 是 shell 層級。 所以 tmux 在 SSH、遠端主機、無圖形環境特別有價值。

3. 為什麼快捷鍵沒反應?

因為要先按 prefix,也就是預設的 Ctrl-b

很推薦的新手起手式

你可以先只學這 6 個:

tmux new -s dev
Ctrl-b %
Ctrl-b "
Ctrl-b 方向鍵
Ctrl-b d
tmux attach -t dev

只會這幾個,就已經很夠用了。

一個最小上手範例

tmux new -s test

進去後:

  1. Ctrl-b % 切左右
  2. Ctrl-b " 切上下
  3. Ctrl-b + 方向鍵切換 pane
  4. 在其中一格跑:

bash watch -n 1 date 5. 按 Ctrl-b d 離開 6. 再輸入:

bash tmux attach -t test

你就會理解 tmux 的核心價值。

如果你要,我下一則可以直接幫你整理成一份 「tmux 新手速查表」,或是幫你寫一份適合你工作流的 .tmux.conf

Comments

Login to add a comment.

No comments yet.