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