🖥️

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後に終了)