【zellij/tmux】端末を閉じても作業を止めない「セッション」の仕組みと使い分け
zellij や tmux などのターミナルマルチプレクサを使うことで、端末(ウィンドウ)を閉じても セッション内の作業(プロセス)を止めずに維持できます。
作業が途切れてやり直しになる場面を減らすことができ、次のようなケースで便利です。
-
Claude Code を並列実行したい
複数ペインで Claude Code を同時に起動し、設計相談用・実装用など役割を分けて作業できます。セッションとしてまとめて管理できるため、端末を閉じても並列作業の構成を保ったまま再開できます。 -
長時間ビルド/テスト中に離席したい
端末を閉じても処理は継続し、戻ったら attach して結果だけ確認できます。 -
ログ監視を流しっぱなしにしたい
tail -fや監視ツールをセッションに置いておけば、別作業をしても監視が途切れません。 -
SSH 作業で接続が切れがち(移動・VPN・スリープ)
接続が切れてもサーバ側の tmux/zellij セッションは生きているので、再接続して続きができます。 -
作業の“配置”ごと残したい(ペイン・ディレクトリ・コマンド)
「どの窓で何を見ていたか」をセッションとして保持でき、探し直しや再配置の手間が減ります。
例えば、"Claude Code を左ペイン"、"フロントエンド開発サーバーのコンソールを右上ペイン"、"バックエンドサーバーのコンソールを右下ペイン" に固定しておくとします。端末を閉じても attach すれば同じ作業場を復元し再開できます。
ターミナルマルチプレクサの使用には、セッションの理解が大事です。
この記事では、次を整理します。
- 端末を閉じても作業が続く仕組み
- Attach と Resurrect の違い(混同しやすい点)
- 切り替え(attach 失敗 → resurrect)の考え方
- PC を軽くしたいときの正しい手順(detach と kill の違い)
図解

まず前提:ターミナルは「3層」で理解すると混乱しない
ターミナル作業は、次の3つに分けて考えると理解しやすくなります。
1. 端末(Terminal / iTerm2 / Alacritty など)
表示と入力の「窓」です。閉じると表示が消えます。
2. シェル(zsh / bash など)
コマンドを解釈して実行する入口です。
3. マルチプレクサ(zellij / tmux)
セッション(作業場)を保持し、複数のペインやタブを管理します。
端末が閉じても、マルチプレクサが生きていれば作業は継続できます。
端末は「窓」、zellij/tmux は「作業場の本体」と考えると、理解しやすいでしょう。
端末を閉じても作業が続くのはなぜ?
次の仕組みを理解しておくことが重要です。
- 端末を閉じる = 表示が消えるだけ
- 端末を閉じても zellij/tmux は生きており、セッション配下のプロセスは動き続けている
プロセスは、例えば、Node/Python の dev server、watch(ファイル監視)、ログ監視、DB や常駐ツール など。
Attach / Detach:生きているセッションに「戻る」「離れる」
ここからが混乱しやすいポイントです。
Attach と Resurrect は似て見えますが、役割が違います。
Attach とは(再接続)
生きているセッションに戻る操作です。端末を閉じてもセッションが生きていれば、Attach で同じ作業場に復帰できます。
Detach とは(切断)
セッションは生かしたまま、表示の接続だけ外す操作です。離席や一時的な切断に向いていますが、プロセスは動き続けます。zellij/tmux の中にいる状態でウィンドウを閉じると自動で detach されることが多いですが、確実にセッションを残したままにしたいなら、明示的に detach しましょう。
Resurrect とは (復元)
死んだセッションを保存情報から復元する操作です。Attach と違って「セッションが死んだ後」のためのものです。
Resurrect で戻せるものの例
- ペイン/タブのレイアウト
- 作業ディレクトリ
- 起動コマンド(対応範囲はツール次第)
Resurrect で戻せないものの例
- 実行中プロセスの「途中状態」(進行中の処理、REPLの途中など)
- インメモリの状態
Attachは「完全に同じ状態に戻す」、Resurrect は「作業環境を素早く再現する」と理解すると良いでしょう。
継続必須でないセッションは detach ではなく kill する
前述のように、detach は表示を外すだけなので、セッション内のプロセスは動き続けます。なので、"不要なのに負荷(メモリ/CPU)のあるセッションが裏で動いたまま" といった状況は避けましょう。
Zellij のセッション操作
- タブで復元したいセッションを選び Enter で Resurrect
=zellij attach <session-name> -
fn + Del:セッションを削除(※復元不可)
=zellij delete-session <session-name> -
Ctrl d:稼働中のセッションを kill (復元可)
=zellij kill-session <session-name>
まとめ
- 端末は「窓」、zellij/tmux は「作業場の本体」
- Attach は「生きているセッションに戻る」
- Resurrect は「死んだセッションを復元する操作」
- 軽くしたいなら detach ではなく kill
Discussion