LinuxC入門|tmuxコマンドによる端末多重化とセッション管理

Linux で作業していると、「1 つの端末だけでは足りない」「長時間動く処理を実行したまま、別の作業もしたい」「SSH が切れても作業を続けたい」と感じることがあります。
そんなときにとても頼りになるのが、tmux コマンドによる端末多重化とセッション管理です。

tmux は、1 つのログイン環境の中で 複数の端末画面を同時に扱える ツールです。
さらに、作業状態を セッション として保持できるため、ログアウトや通信切断が発生しても、後から同じ状態に戻って作業を再開できます。

このページでは、tmux の基本的な考え方から、実際の操作イメージまでを、表や具体例を使ってやさしく解説していきます。

まずは、tmux がどんなことをしてくれるコマンドなのか、全体像を整理してみましょう。

tmux でできること

機能内容
端末の多重化1 画面で複数の作業を同時に進められる。
セッション管理作業状態をまとめて管理
デタッチ作業を止めずに一時的に切り離し
アタッチ後から同じ作業画面に復帰

tmux を使うと、「作業机をそのまま残して席を離れる」ような感覚で、端末作業を管理できるようになります。

tmux コマンドの基本的な書式は、とてもシンプルです。

tmux コマンドの概要

tmux は、端末を多重化してセッション単位で管理するためのコマンドです。

コマンド書式

tmux [サブコマンド]

tmux には、セッションを管理するためのサブコマンドが用意されています。

主なサブコマンド

サブコマンド説明
attach-session [-t ID]指定したセッションに接続
list-sessionsセッションの一覧を表示
kill-session [-t ID]指定したセッションを終了

これらを使うことで、「今どんなセッションがあるのか」「どのセッションに戻るのか」を自由にコントロールできます。

tmux のインストール

tmux を使うには、まずインストールを行います。
AlmaLinux 9.7 では、dnf を使って簡単にインストールできます。

[root@AlmaLinux ~]# dnf install tmux

途中で確認メッセージが表示されたら、y を入力して続行します。
インストールが完了すれば、すぐに tmux を使い始められます。

それでは、実際に tmux を起動してみましょう。

tmux の起動

[suzuki@AlmaLinux ~]$ tmux

このコマンドを実行すると、画面が一瞬リフレッシュされ、新しい作業環境に切り替わります。
この tmux を起動した単位 を、セッション と呼びます。

tmux セッションの中では、

  • セッション
  • ウィンドウ
  • ペイン

という 3 つの構造で画面が管理されています。

tmux の構造イメージ

要素役割
セッション作業全体をまとめる単位
ウィンドウタブのような作業画面
ペイン画面を分割した実行領域

tmux を起動した直後は、1 つのウィンドウと 1 つのペインが表示されています。

tmux の操作は、プレフィックスキー を使って行います。
既定のプレフィックスキーは Ctrl + b です。

「Ctrl + b を押したあとに、別のキーを押す」という流れで、さまざまな操作を行います。

主なキー操作

操作説明
Ctrl + b → "ペインを上下に分割
Ctrl + b → %ペインを左右に分割
Ctrl + b → oペイン間を移動
Ctrl + b → x現在のペインを閉じる。
Ctrl + b → dセッションをデタッチ

では、ペイン操作の流れを具体的に見てみましょう。

tmux コマンドの実行

「tmux」コマンドを実行します。

 tmuxを起動した1つの単位をセッションと呼びます。tmuxコマンドを実行すると、画面がリフレッシュされ、新たに操作画面(ウィンドウ)と実行環境(ペイン)が生成されます。

[suzuki@AlmaLinux ~]$ tmux

tmuxコマンド実行直後

実際に「tmux」コマンドを実行した直後の画面は、下図のとおりです。

画面がリフレッシュされ、新たなウィンドウと実行環境が生成されます。

まず、ペインを上下に分割します。

プレフィックスキー(「Ctrl」+「b」)を押した後、「"」キーを押します。

これで上下のペイン間を自由に移動できるようになります。下のペインが、カレントペインとなります。

実際の画面は下図のとおりです。

次に、上のペインへ移動します。

プレフィックスキー(「Ctrl」+「b」)を押した後、「o」キーを押します。

上のペインで、次のコマンドを実行してみます。

[suzuki@AlmaLinux ~]$ sleep 3600

このコマンドは、3600 秒(1 時間)処理を停止するコマンドです。
ここでは「長時間動く処理」の例として使っています。

sleep が実行されている間に、下のペインへ移動します。

プレフィックスキー(「Ctrl」+「b」)を押した後、「o」キーを押します。

下のペインから、sleep コマンドの PID を確認します。

[suzuki@AlmaLinux ~]$ pgrep sleep

PID が分かったら、そのプロセスを終了させてみましょう。

[suzuki@AlmaLinux ~]$ kill 42204

※ PID は実行環境によって異なります。

すると、上のペインには Terminated と表示され、プロンプトが戻ります。
これは、kill コマンドによって sleep プロセスが終了したことを意味します。

ペインを終了するには、exit コマンドを使います。
下のペインを exit コマンドで終了させます。

[suzuki@AlmaLinux ~]$ exit

もう一度、残ったペインで exit コマンドを実行して終了させます。

[suzuki@AlmaLinux ~]$ exit

上下のペインそれぞれで exit を実行すると、tmux セッション自体も終了し、元のシェルに戻ります。

デタッチとは

tmux の大きな特徴が、デタッチアタッチ です。

デタッチとは、tmux セッションを一時的に切り離し、元のコマンドラインに戻る操作です。
セッションは終了せず、バックグラウンドで待機し続けます。

tmuxセッションを開始

以下のコマンドを実行します。

tmux コマンドを実行します。

[suzuki@AlmaLinux ~]$ tmux

実際の操作画面

ls コマンドを実行します。

[suzuki@AlmaLinux ~]$ ls
テンプレート  ドキュメント  音楽    公開
ダウンロード  デスクトップ  ビデオ  画像

実際の操作画面

デタッチの操作

プレフィックスキーの「Ctrl」+「b」キーを押し、「d」キーを入力します。

実行すると、次のように表示されます。

[detached (from session 0)]
[suzuki@AlmaLinux ~]$

実際の操作画面

アタッチとは

アタッチとは、デタッチしていた tmux セッションに再接続する操作です。

[suzuki@AlmaLinux ~]$ tmux attach

これで、先ほどの作業画面にそのまま戻れます。

tmux セッションを終了

tmuxセッションを終了します。
exit コマンドを実行します。

[suzuki@AlmaLinux ~]$ exit

tmuxセッションが終了して、元のコマンドラインに戻ります。

実際の操作画面

tmuxセッションの管理

セッションの一覧を確認したい場合は、次のコマンドを使います。

[suzuki@AlmaLinux ~]$ tmux list-sessions

不要になったセッションは、次のように終了できます。

[suzuki@AlmaLinux ~]$ tmux kill-session -t 0

tmux は、端末作業を効率よく、安全に進めるためのとても強力なツールです。
セッション・ウィンドウ・ペインという考え方を理解するだけで、作業の幅が一気に広がります。

まずは基本操作に慣れて、「作業を止めずに一度離れる」感覚を体験してみてくださいね。