About

tmuxはどう動くのか?

ターミナルマルチプレクサでセッション維持&分割

tmux(terminal multiplexer)は1つのターミナルウィンドウで複数セッションを管理し、ペインを分割し、SSH接続が切れても作業を維持できるツールです。核心はサーバー-クライアント構造です。tmuxサーバーがバックグラウンドでセッションを管理し、私たちが見るターミナルはクライアントとしてサーバーに接続します。そのためターミナルを閉じても(detach)サーバーのセッションは生き続け、後から再接続(attach)できます。階層構造はServer > Session > Window > Paneです。

構造ダイアグラム

🖥️
tmux サーバー
バックグラウンドプロセス
Session: dev
Window 0: vim
Pane 0 Pane 1
Window 1: server
rails s
attach ←
→ detach
💻
ターミナル(クライアント)
iTerm / Terminal.app
$ tmux attach -t dev
# セッションに接続
階層構造: Server > Session > Window > Pane
Server → Session (dev) → Window (vim) → Pane
主要コマンド (prefix: Ctrl+b)
d detach
c new window
% 縦分割
" 横分割
n/p 次/前のウィンドウ
arrow ペイン移動
SSH切断シナリオ
SSH接続 → tmux new -s work → 作業中... → ネットワーク切断! → SSH再接続 → tmux attach -t work → 作業そのまま!
ポイント
  • サーバー・クライアント構造: ターミナルはクライアント、tmuxサーバーはバックグラウンドで実行
  • セッション維持: デタッチしてもサーバー+セッションは生存 — SSH切断でも安全
  • 複数接続: 同じセッションに複数クライアントがattach可能(ペアプログラミング)
  • 画面分割: Paneで1つのWindowを分割してマルチタスキング

動作フロー

1

最初のtmuxコマンド実行時にバックグラウンドでtmuxサーバープロセス開始

2

サーバーが新しいセッション(Session)を生成、セッション内にデフォルトウィンドウ(Window)を生成

3

ターミナル(クライアント)がサーバーに接続してセッションを表示

4

Ctrl+b dでdetach → クライアントのみ終了、サーバー+セッションは維持

5

tmux attachで既存セッションに再接続(SSH再接続後も可能)

6

Ctrl+b %/"でペイン分割、Ctrl+b cで新ウィンドウ生成

メリット

  • ✓ SSH切断でもセッション維持
  • ✓ 画面分割でマルチタスキング
  • ✓ セッション共有で協業可能
  • ✓ スクリプトで自動化可能(tmuxinator)
  • ✓ 軽量で高速

デメリット

  • ✗ キーバインディングの学習が必要
  • ✗ プレフィックスキー(Ctrl+b)に慣れる必要あり
  • ✗ マウスサポートが限定的(設定が必要)
  • ✗ 複雑なレイアウト管理が困難

ユースケース

SSH切断防止(リモートサーバー作業) ターミナル画面分割(複数タスクの同時モニタリング) ペアプログラミング(同一セッション共有) 長時間タスクの維持(ビルド、デプロイ) サーバープロセス管理(detach後に終了)
← MCPの通信方式 stdioとStreamable HTTPの違い DNS-PERSIST-01とは?DNS-01との違いと_validation-persistの仕組み →