Linux / コマンド / tmux - ターミナルセッションの分離・再接続

tmuxは、1つのターミナルで複数のウィンドウや分割領域(ペイン)を管理するターミナルマルチプレクサです。セッションを分離した後に再接続できるため、リモート接続が切れてもシェル作業を続ける際に便利です。

セッションは複数のウィンドウをまとめ、各ウィンドウを複数のペインへ分割できます。ペインごとに独立した端末とプログラムを動かします。初期設定のプレフィックスキーはCtrl+bで、プレフィックスキーを押した後に次のキーを入力します。標準的な設定では、画面を分離してもtmuxサーバープロセスが動作している間はセッションが保持されますが、ホストの再起動後やtmuxサーバー終了後に状態を復元する機能ではありません。

基本的な文法

tmux [コマンド] [オプション]

インストールされている実装とオプションは、配布版によって異なる場合があります。man tmuxで現在のシステムの説明を確認してください。

使用例

名前付きセッションの開始

tmuxを導入済みの対話型端末で試します。先に tmux ls で同名がないかを確認し、work が使用中なら別の名前にします。遠隔作業を続けたい場合は、SSHで接続先サーバーへログイン してから、そのサーバー上でtmuxを起動し、その中で対象の作業を実行します。

tmux new -s work

セッション一覧の確認

分離後に現在残っているセッションを探します。

tmux ls

既存セッションへの再接続

開始するときに付けた名前を使用します。

tmux attach -t work

セッションを分離して再接続する

以下の3行は一括で貼り付けず、順番に実行します。1行目で demo セッションに入ったら、その中で実習用の sleep 60 などを開始します。次に初期設定の Ctrl+b を押して離し、小文字の d で分離してください。元のシェルへ戻ってから2行目で一覧を確認し、3行目で再接続します。

tmux new -s demo
tmux ls
tmux attach -t demo

分離後の tmux ls に出る対象セッションの先頭部分の例です。作成日時など後続の表示は省略しています。

demo: 1 windows

attachは分離されたセッションの画面に戻ります。同じ名前のセッションが既に存在すると、新しいセッションの作成に失敗する可能性があるため、まずtmux lsを確認してください。リモートサーバーでネットワークが切断されても作業を維持するのに便利ですが、サーバー自体が再起動すると通常のtmuxセッションも消えます。

主なオプションと形式

オプション・形式 説明
new -s 名前 名前を指定して新しいセッションを作成します。
ls 現在のtmuxサーバーのセッションを一覧表示します。
attach -t 名前 指定したセッションに接続します。
detach 現在クライアントをセッションから分離します。
split-window 現在のウィンドウをペインに分割します。

使用する際の注意点

デフォルトのキーコンビネーションではCtrl+bの次のdはセッション分離、cは新しいウィンドウ、%と"はペイン分割です。キーを同時に押すのではなく、プレフィックスキーの後に次のキーを押します。tmuxがインストールされていないディストリビューションもあるため、まずパッケージの提供状況を確認してください。セッション内のシェルで exit を実行すると、そのシェルが終了します。標準設定では最後のペインを閉じるとセッションもなくなるため、画面だけを離れるデタッチと区別してください。

よくある質問

SSH接続が切断されるとtmuxセッションは常に残りますか?

tmuxサーバーとリモートシステムが稼働し続けている場合、通常は再接続可能です。ホストの再起動後や終了済みセッションの状態を復元する機能ではありません。

公式ドキュメント

オプションの正確な動作や実装ごとの違いは、tmux関連の公式ドキュメントで確認できます。