このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】複数のセッション起動・複数のウィンドウの作成・1つのウィンドウを複数のペインに分割する:tmuxコマンド
tmuxコマンドの概要
tmux
(ティーマックス)は、端末を多重化するソフトウェアです。tmux
コマンドは、1つの操作画面を分割したり、分割した画面同士で文字列をコピー&ペーストできる機能を提供します。ネットワークが途中で切断されても、再接続したときに切断時の続きから作業を再開できるため、ネットワーク越しにサーバーを操作する際に便利です。このようなソフトウェアをターミナルマルチプレクサと呼びます。tmux
と同様の機能を有するコマンドにはscreen
コマンドがあります。
インストール方法(Ubuntuの場合)
Ubuntuの場合は、以下のコマンドを実行してインストールします。パスワードの入力が求められたら、パスワードを入力し、「続行しますか? [Y/n]」には「y」と入力します。
【コマンド】sudo apt install tmux
ser01@ubuntu-vm:~$ sudo apt install tmux
[sudo] user01 のパスワード:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
libevent-core-2.1-7 libutempter0
以下のパッケージが新たにインストールされます:
libevent-core-2.1-7 libutempter0 tmux
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 176 個。
531 kB のアーカイブを取得する必要があります。
この操作後に追加で 1,365 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://jp.archive.ubuntu.com/ubuntu jammy/main amd64 libevent-core-2.1-7 amd64 2.1.12-stable-1build3 [93.9 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu jammy/main amd64 libutempter0 amd64 1.2.1-2build2 [8,848 B]
取得:3 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 tmux amd64 3.2a-4ubuntu0.2 [428 kB]
531 kB を 2秒 で取得しました (255 kB/s)
以前に未選択のパッケージ libevent-core-2.1-7:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 203610 個のファイルとディレクトリが
インストールされています。)
.../libevent-core-2.1-7_2.1.12-stable-1build3_amd64.deb を展開する準備をして
います ...
libevent-core-2.1-7:amd64 (2.1.12-stable-1build3) を展開しています...
以前に未選択のパッケージ libutempter0:amd64 を選択しています。
.../libutempter0_1.2.1-2build2_amd64.deb を展開する準備をしています ...
libutempter0:amd64 (1.2.1-2build2) を展開しています...
以前に未選択のパッケージ tmux を選択しています。
.../tmux_3.2a-4ubuntu0.2_amd64.deb を展開する準備をしています ...
tmux (3.2a-4ubuntu0.2) を展開しています...
libevent-core-2.1-7:amd64 (2.1.12-stable-1build3) を設定しています ...
libutempter0:amd64 (1.2.1-2build2) を設定しています ...
tmux (3.2a-4ubuntu0.2) を設定しています ...
man-db (2.10.2-1) のトリガを処理しています ...
libc-bin (2.35-0ubuntu3.1) のトリガを処理しています ...
ウィンドウとペインについて
tmuxコマンドの実行
- 「
tmux
」コマンドを実行します。
tmux
を起動した1つの単位をセッションと呼びます。tmux
コマンドを実行すると、画面がリフレッシュされ、新たに操作画面(ウィンドウ)と実行環境(ペイン)が生成されます。
user01@ubuntu-vm:~$ tmux
tmuxコマンド実行直後
実際に「tmux
」コマンドを実行した直後の画面は、下図のとおりです。
画面が画面がリフレッシュされ、新たなウィンドウと実行環境が生成されます。
プレフィックスキー
tmux
コマンド実行中は「Ctrl」+「b」キーと特定のキーの組み合わせでウィンドウを操作します。
tmuxコマンド実行中のキー操作
操作 | 説明 |
---|---|
プレフィックスキー +「 " 」 | ペインを上下に分割します。 |
プレフィックスキー +「 % 」 | ペインを左右に分割します。 |
プレフィックスキー +「 o 」 | ペイン間を移動します。 |
プレフィックスキー +「 x 」 | 現在のペインを閉じます。 |
プレフィックスキー +「 d 」 | セッションをデタッチ(切り離し)します。 |
ペインの操作
1.ペインを上下に分割する
- プレフィックスキー(「Ctrl」+「b」)を押した後、「"」キーを押します。
- これで上下のペイン間を自由に移動できるようになります。下のペインが、カレントペインとなります。
実際の画面は下図のとおりです。
2.上のペインへの移動
- プレフィックスキー(「Ctrl」+「b」)を押した後、「o」キーを押します。
3.sleepコマンドの実行
- 上のペインで「
sleep 3600
」コマンドを実行します。sleep
コマンドは指定した秒数だけ停止するコマンドです。3600秒を指定して1時間、停止させます。
4.下のペインに移動する
sleep
コマンドが実行されている間に、下のペインに移動します。- プレフィックスキー(「Ctrl」+「b」)を押した後、「o」キーを押します。
5.sleepコマンドのPIDを調べる
- 「
pgrep sleep
」コマンドでsleep
コマンドのPIDを特定します。
6.killコマンドでsleepコマンドのプロセスを終了させる
- 例えば、「
kill 74490
」コマンドを実行します。
※PIDは実行環境で異なります。
sleep
コマンドが実行されていた上のペインには「Terminated」と表示され、プロンプトが表示されます。これは、kill
コマンドからsleep
コマンドのプロセスにSIGTERM
シグナルが送信されてsleep
コマンドのプロセスが終了したことを意味します。
7.ペインの終了
- ペインを終了させるには「
exit
」コマンドを使用します。 - 下のペインを「
exit
」コマンドで終了させます。 - もう一度、残ったペインで「
exit
」コマンドを実行して終了させます。
- もとのシェルに戻ります。
まとめ
tmux
コマンドは、端末を多重化するための強力なツールであり、セッション、ウィンドウ、ペインを活用して効率的に作業を管理できます。ネットワーク切断後の作業再開や複数の作業を同時に行う場合に非常に便利です。操作方法や各コマンドの使い方を理解し、効果的に利用することで、作業効率が大幅に向上します。