<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Multiplexer on Tarragon</title><link>https://tarrragon.github.io/blog/tags/multiplexer/</link><description>Recent content in Multiplexer on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Mon, 15 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/multiplexer/index.xml" rel="self" type="application/rss+xml"/><item><title>tmux 基礎：遠端 session 持久化與基本操作</title><link>https://tarrragon.github.io/blog/linux/tools/cli/tmux-persistence-and-basics/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/linux/tools/cli/tmux-persistence-and-basics/</guid><description>&lt;p>tmux 是終端機多工器，核心責任是把終端機 session 的生命週期與連線本身脫鉤，並在單一連線裡分割出多個工作區。在遠端 SSH 開發下，它解決最痛的一個問題：連線斷了，伺服器上跑的東西不會跟著消失。把工作放進 tmux，連線中斷後 session 仍在伺服器上運作，重連 attach 回去就接續原狀。&lt;/p>
&lt;p>遠端伺服器優先選 tmux 的理由是可用性。它幾乎是事實標準，多數 Linux 發行版的套件庫都有、很多伺服器甚至預裝。&lt;code>zellij&lt;/code> 功能新、畫面提示友善，但通常要自行安裝；在不能隨意裝套件的機器上，tmux 處處可用就是決定性優勢。兩者的取捨在最後一節展開。&lt;/p>
&lt;p>本文承接 &lt;a href="https://tarrragon.github.io/blog/linux/tools/cli/cli-graphical-tools-overview/" data-link-title="終端機圖形化工具總覽：遠端操作下的 TUI、文字圖表與多工器" data-link-desc="在純文字終端機裡用 ASCII 與製圖字元做出監控儀表板、資料圖表與多視窗操作的工具總覽，並針對 SSH 伺服器、手機平板、低頻寬三種遠端情境給出選型判讀。">終端機圖形化工具總覽&lt;/a> 的多工器分類，聚焦 tmux 在遠端情境的實際操作。&lt;/p>
&lt;h2 id="持久化工作流detach-與-reattach">持久化工作流：detach 與 reattach&lt;/h2>
&lt;p>tmux 對遠端最重要的能力是 session 持久化：session 跑在伺服器上，跟當前這條 SSH 連線無關，所以主動離開或被動斷線後它都還在。這條工作流由四個指令構成。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>動作&lt;/th>
 &lt;th>指令&lt;/th>
 &lt;th>說明&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>開新具名 session&lt;/td>
 &lt;td>&lt;code>tmux new -s work&lt;/code>&lt;/td>
 &lt;td>用名字開，之後好辨識&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>主動離開&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按 &lt;code>d&lt;/code>&lt;/td>
 &lt;td>detach，session 留在背景繼續跑&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>列出現有 session&lt;/td>
 &lt;td>&lt;code>tmux ls&lt;/code>&lt;/td>
 &lt;td>看伺服器上有哪些 session&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>接回&lt;/td>
 &lt;td>&lt;code>tmux attach -t work&lt;/code>&lt;/td>
 &lt;td>reattach，回到離開時的狀態（可簡寫 &lt;code>tmux a -t work&lt;/code>）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>關鍵在於被動斷線與主動 detach 的結果相同：手機從 Wi-Fi 切到行動網路、SSH 連線逾時、筆電闔上，這些情況下 tmux session 都留在伺服器上，重連後 &lt;code>tmux a&lt;/code> 就接回去。判讀訊號很單純：任何超過幾秒、不想因斷線重來的工作（build、資料遷移、&lt;code>tail -f&lt;/code> 追 log、跑測試），開始前先進 tmux。&lt;/p>
&lt;h2 id="prefix-keytmux-操作的入口">prefix key：tmux 操作的入口&lt;/h2>
&lt;p>tmux 的所有指令都以 prefix key 起手，預設是 &lt;code>Ctrl-b&lt;/code>。操作方式是按下 &lt;code>Ctrl-b&lt;/code> 放開、再按功能鍵，而不是同時按住。理解這個「兩段式」是上手 tmux 的第一道門檻；若按住不放或間隔太久而沒反應，多半是兩段式沒按對，重來一次即可。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>操作&lt;/th>
 &lt;th>按鍵&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>開新 window&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按 &lt;code>c&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>切換上一個 / 下一個 window&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按 &lt;code>p&lt;/code> / &lt;code>n&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>跳到第 N 個 window&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按數字&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>垂直分割（左右兩個 pane）&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按 &lt;code>%&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>水平分割（上下兩個 pane）&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按 &lt;code>&amp;quot;&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>在 pane 間移動&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按方向鍵&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>關閉當前 pane&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按 &lt;code>x&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>單一 pane 全螢幕放大 / 還原&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按 &lt;code>z&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>進 copy mode（往回捲歷史）&lt;/td>
 &lt;td>&lt;code>prefix&lt;/code> 後按 &lt;code>[&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>window 與 pane 是兩個層級：window 是整頁工作區（類似分頁），pane 是一個 window 內切出的子區塊。遠端開發常見的佈局是一個 window 切成數個 pane，一個跑編輯器、一個跑 &lt;code>tail -f&lt;/code>、一個留著敲指令。捲動歷史要先進 copy mode（&lt;code>prefix&lt;/code> 後按 &lt;code>[&lt;/code>），用方向鍵或 &lt;code>PageUp&lt;/code> 往回看，按 &lt;code>q&lt;/code> 離開 — 這是初學最容易卡住的點，因為進了 tmux 後終端機原本的捲動行為改由 tmux 接管。&lt;/p>
&lt;h2 id="遠端與手機的調校">遠端與手機的調校&lt;/h2>
&lt;p>tmux 預設設定對手機與慢速連線不夠順，幾項調整能明顯改善體感，全部寫在 &lt;code>~/.tmux.conf&lt;/code>。&lt;/p>
&lt;p>prefix key &lt;code>Ctrl-b&lt;/code> 在手機虛擬鍵盤上難按，常見的調整是改綁成 &lt;code>Ctrl-a&lt;/code>（更靠近鍵盤左側）：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="c1"># ~/.tmux.conf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">unbind C-b
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">&lt;span class="nb">set&lt;/span> -g prefix C-a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">&lt;span class="nb">bind&lt;/span> C-a send-prefix&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>滑鼠支援讓觸控裝置能直接點選 pane 與捲動，在手機與平板特別有用：&lt;/p></description><content:encoded><![CDATA[<p>tmux 是終端機多工器，核心責任是把終端機 session 的生命週期與連線本身脫鉤，並在單一連線裡分割出多個工作區。在遠端 SSH 開發下，它解決最痛的一個問題：連線斷了，伺服器上跑的東西不會跟著消失。把工作放進 tmux，連線中斷後 session 仍在伺服器上運作，重連 attach 回去就接續原狀。</p>
<p>遠端伺服器優先選 tmux 的理由是可用性。它幾乎是事實標準，多數 Linux 發行版的套件庫都有、很多伺服器甚至預裝。<code>zellij</code> 功能新、畫面提示友善，但通常要自行安裝；在不能隨意裝套件的機器上，tmux 處處可用就是決定性優勢。兩者的取捨在最後一節展開。</p>
<p>本文承接 <a href="/blog/linux/tools/cli/cli-graphical-tools-overview/" data-link-title="終端機圖形化工具總覽：遠端操作下的 TUI、文字圖表與多工器" data-link-desc="在純文字終端機裡用 ASCII 與製圖字元做出監控儀表板、資料圖表與多視窗操作的工具總覽，並針對 SSH 伺服器、手機平板、低頻寬三種遠端情境給出選型判讀。">終端機圖形化工具總覽</a> 的多工器分類，聚焦 tmux 在遠端情境的實際操作。</p>
<h2 id="持久化工作流detach-與-reattach">持久化工作流：detach 與 reattach</h2>
<p>tmux 對遠端最重要的能力是 session 持久化：session 跑在伺服器上，跟當前這條 SSH 連線無關，所以主動離開或被動斷線後它都還在。這條工作流由四個指令構成。</p>
<table>
  <thead>
      <tr>
          <th>動作</th>
          <th>指令</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>開新具名 session</td>
          <td><code>tmux new -s work</code></td>
          <td>用名字開，之後好辨識</td>
      </tr>
      <tr>
          <td>主動離開</td>
          <td><code>prefix</code> 後按 <code>d</code></td>
          <td>detach，session 留在背景繼續跑</td>
      </tr>
      <tr>
          <td>列出現有 session</td>
          <td><code>tmux ls</code></td>
          <td>看伺服器上有哪些 session</td>
      </tr>
      <tr>
          <td>接回</td>
          <td><code>tmux attach -t work</code></td>
          <td>reattach，回到離開時的狀態（可簡寫 <code>tmux a -t work</code>）</td>
      </tr>
  </tbody>
</table>
<p>關鍵在於被動斷線與主動 detach 的結果相同：手機從 Wi-Fi 切到行動網路、SSH 連線逾時、筆電闔上，這些情況下 tmux session 都留在伺服器上，重連後 <code>tmux a</code> 就接回去。判讀訊號很單純：任何超過幾秒、不想因斷線重來的工作（build、資料遷移、<code>tail -f</code> 追 log、跑測試），開始前先進 tmux。</p>
<h2 id="prefix-keytmux-操作的入口">prefix key：tmux 操作的入口</h2>
<p>tmux 的所有指令都以 prefix key 起手，預設是 <code>Ctrl-b</code>。操作方式是按下 <code>Ctrl-b</code> 放開、再按功能鍵，而不是同時按住。理解這個「兩段式」是上手 tmux 的第一道門檻；若按住不放或間隔太久而沒反應，多半是兩段式沒按對，重來一次即可。</p>
<table>
  <thead>
      <tr>
          <th>操作</th>
          <th>按鍵</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>開新 window</td>
          <td><code>prefix</code> 後按 <code>c</code></td>
      </tr>
      <tr>
          <td>切換上一個 / 下一個 window</td>
          <td><code>prefix</code> 後按 <code>p</code> / <code>n</code></td>
      </tr>
      <tr>
          <td>跳到第 N 個 window</td>
          <td><code>prefix</code> 後按數字</td>
      </tr>
      <tr>
          <td>垂直分割（左右兩個 pane）</td>
          <td><code>prefix</code> 後按 <code>%</code></td>
      </tr>
      <tr>
          <td>水平分割（上下兩個 pane）</td>
          <td><code>prefix</code> 後按 <code>&quot;</code></td>
      </tr>
      <tr>
          <td>在 pane 間移動</td>
          <td><code>prefix</code> 後按方向鍵</td>
      </tr>
      <tr>
          <td>關閉當前 pane</td>
          <td><code>prefix</code> 後按 <code>x</code></td>
      </tr>
      <tr>
          <td>單一 pane 全螢幕放大 / 還原</td>
          <td><code>prefix</code> 後按 <code>z</code></td>
      </tr>
      <tr>
          <td>進 copy mode（往回捲歷史）</td>
          <td><code>prefix</code> 後按 <code>[</code></td>
      </tr>
  </tbody>
</table>
<p>window 與 pane 是兩個層級：window 是整頁工作區（類似分頁），pane 是一個 window 內切出的子區塊。遠端開發常見的佈局是一個 window 切成數個 pane，一個跑編輯器、一個跑 <code>tail -f</code>、一個留著敲指令。捲動歷史要先進 copy mode（<code>prefix</code> 後按 <code>[</code>），用方向鍵或 <code>PageUp</code> 往回看，按 <code>q</code> 離開 — 這是初學最容易卡住的點，因為進了 tmux 後終端機原本的捲動行為改由 tmux 接管。</p>
<h2 id="遠端與手機的調校">遠端與手機的調校</h2>
<p>tmux 預設設定對手機與慢速連線不夠順，幾項調整能明顯改善體感，全部寫在 <code>~/.tmux.conf</code>。</p>
<p>prefix key <code>Ctrl-b</code> 在手機虛擬鍵盤上難按，常見的調整是改綁成 <code>Ctrl-a</code>（更靠近鍵盤左側）：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># ~/.tmux.conf</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">unbind C-b
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="nb">set</span> -g prefix C-a
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="nb">bind</span> C-a send-prefix</span></span></code></pre></div><p>滑鼠支援讓觸控裝置能直接點選 pane 與捲動，在手機與平板特別有用：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># ~/.tmux.conf</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="nb">set</span> -g mouse on</span></span></code></pre></div><p>頻寬層面，tmux 本身傳輸的是純文字、量很低，斷線重連的成本也小。真正吃頻寬的是跑在 tmux 裡的全螢幕 TUI（例如 <code>btop</code>）的高頻重畫 — 這要調的是那個工具自己的刷新率，而非 tmux。改完設定檔後，在既有 session 內用 <code>prefix</code> 後按 <code>:</code> 輸入 <code>source-file ~/.tmux.conf</code> 重新載入。</p>
<h2 id="tmux-與-zellij-的選型對照">tmux 與 zellij 的選型對照</h2>
<p>tmux 與 zellij 解決同一類問題，session 持久化是兩者共有的基本能力（zellij 甚至內建 resurrection），真正的選擇依據是可用性與上手成本。</p>
<table>
  <thead>
      <tr>
          <th>面向</th>
          <th>tmux</th>
          <th>zellij</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>預設可用性</td>
          <td>多數伺服器預裝或套件庫直接有</td>
          <td>通常需要自行安裝</td>
      </tr>
      <tr>
          <td>上手成本</td>
          <td>需記快捷鍵</td>
          <td>畫面有提示列，操作邊看邊學</td>
      </tr>
      <tr>
          <td>session 持久化</td>
          <td>有（detach / reattach）</td>
          <td>有，另內建 resurrection（結束後重建）</td>
      </tr>
      <tr>
          <td>設定生態</td>
          <td>成熟、範例與設定檔分享多</td>
          <td>內建 layout、設定較直覺</td>
      </tr>
      <tr>
          <td>資源佔用</td>
          <td>低</td>
          <td>略高但仍輕量（差在閒置記憶體、與傳輸頻寬無關）</td>
      </tr>
  </tbody>
</table>
<p>選型分界很清楚：受限或陌生的伺服器、要求處處可用，選 tmux；自己掌控的機器、想要友善的上手體驗與內建 layout，選 zellij。對 prefix 快捷鍵還不熟的人，這條分界仍成立：在別人的伺服器上工作優先學 tmux，因為無法保證對方裝了 zellij，可用性約束高於上手體驗；zellij 的友善體驗留給自己能掌控安裝的機器。兩者的指令心智模型相近（都靠一個 prefix/modifier 起手），學會一個再換另一個成本不高。zellij 路線的實際操作在本資料夾另有兩篇：pane 的 CLI 操作見 <a href="/blog/linux/tools/cli/zellij-pane/" data-link-title="Zellij 多終端機操作指南" data-link-desc="Zellij pane 的佈局查看、內容讀取、大小調整等 CLI 操作方式，適合搭配 AI 工具使用。">Zellij 多終端機操作指南</a>、瀏覽器遠端連線見 <a href="/blog/linux/tools/cli/zellij-remote-web-client/" data-link-title="Zellij Web Client 外網連線教學" data-link-desc="讓他人透過瀏覽器連線到指定的 Zellij session，包含 SSL 憑證申請、防火牆設定、Token 管理等完整步驟。">Zellij Web Client 外網連線教學</a>。</p>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>在多工器的 pane 裡擺即時監控：見 <a href="/blog/linux/tools/cli/tui-monitoring-tools/" data-link-title="TUI 監控工具：btop、htop、k9s 的遠端使用與刷新率調校" data-link-desc="全螢幕 TUI 監控工具在遠端 SSH 情境的使用：htop 進程操作、btop 多資源儀表板、k9s 管 Kubernetes，以及慢速連線下刷新率與頻寬的取捨。">TUI 監控工具</a>。</li>
<li>zellij 的進階用法：<a href="/blog/linux/tools/cli/zellij-pane/" data-link-title="Zellij 多終端機操作指南" data-link-desc="Zellij pane 的佈局查看、內容讀取、大小調整等 CLI 操作方式，適合搭配 AI 工具使用。">Zellij 多終端機操作指南</a> 與 <a href="/blog/linux/tools/cli/zellij-remote-web-client/" data-link-title="Zellij Web Client 外網連線教學" data-link-desc="讓他人透過瀏覽器連線到指定的 Zellij session，包含 SSL 憑證申請、防火牆設定、Token 管理等完整步驟。">Zellij Web Client 外網連線教學</a>。</li>
<li>多工器在三類遠端工具中的定位：<a href="/blog/linux/tools/cli/cli-graphical-tools-overview/" data-link-title="終端機圖形化工具總覽：遠端操作下的 TUI、文字圖表與多工器" data-link-desc="在純文字終端機裡用 ASCII 與製圖字元做出監控儀表板、資料圖表與多視窗操作的工具總覽，並針對 SSH 伺服器、手機平板、低頻寬三種遠端情境給出選型判讀。">終端機圖形化工具總覽</a>。</li>
</ul>
]]></content:encoded></item></channel></rss>