tmux はターミナル・マルチプレクサーであり、1 つのターミナルから複数の「擬似ターミナル」を作成できます。セキュアシェル (SSH) を使ってマシンにリモート接続する場合など、1 つの接続で複数のプログラムを実行する場合に極めて便利です。
また、tmux はメインターミナルからプログラムを切り離し、誤って接続が切断されるのを防ぎます。tmux と現在のターミナルとの接続を解除しても、すべてのプログラムが引き続きバックグラウンドで安全に実行されます。後から、tmux を同じターミナルまたは別のターミナルに接続し直せます。
リモート接続によるメリットに加え、スピードと高い柔軟性により、tmux は、ウィンドウマネージャーと同様にローカルマシン上で複数のターミナルを管理できる優れたツールとなっています。私は 8 年以上ノートパソコンで tmux を使っています。その中で生産性の向上に役立っている tmux の機能として、以下のようなものがあります。
- 完全にカスタマイズ可能なステータスバー
- マルチウィンドウ管理
- ウィンドウの複数のペインへの分割
- 自動レイアウト
- パネル同期
- さまざまな目的に合わせたカスタム tmux セッションを作成できるスクリプト機能
こちらがカスタマイズされた tmux セッションの一例です。
tmux は、一部の Linux ディストリビューションで非推奨となっている Screen と同じ機能を一部提供しています。tmux は Screen よりもコードベースが先進的で、Screen にはないカスタマイズ機能を備えています。
tmux のメリットがわかったところで、続いてインストール方法と使い方を説明します。
tmux をインストールする
tmux は Fedora および RHEL 8 以降の Red Hat Enterprise Linux (RHEL) の標準リポジトリで利用できます。次のように、DNF を使ってインストールできます。
$ sudo dnf -y install tmuxまた、この他にもさまざまな Linux ディストリビューションで利用できるため、お好みのディストリビューションのパッケージマネージャーを使用してインストールできるはずです。他のオペレーティングシステムについては、tmux インストールガイドを参照してください。
[ システム管理者のための Bash スクリプトガイドを今すぐダウンロード ]
tmux の使用を始める
tmux の使用を開始するには、ターミナルで tmux と入力します。このコマンドは、tmux サーバーを起動し、単一ウィンドウのデフォルトセッション (番号 0) を作成し、そのセッションに接続します。
$ tmux
tmux に接続したので、通常どおり、任意のコマンドやプログラムを実行できます。たとえば、次のような長時間実行のプロセスをシミュレートします。
$ c=1 $
while true; do echo "Hello $c"; let c=c+1; sleep 1; done
Hello 1
Hello 2
Hello 3Ctrl+B を押してから D を押すと、tmux セッションから接続解除できます。tmux は、「プレフィックス」と呼ばれるキーの組み合わせを押すことで起動される、さまざまなキーバインド (キーボード・ショートカット) を使って操作します。デフォルトでは、プレフィックスは Ctrl+B です。その後に D を押して、現在のセッションから接続解除します。
[detached (from session 0)]セッションには接続されていませんが、長時間実行中のコマンドはバックグラウンドで安全に実行されます。tmux ls を使ってアクティブな tmux セッションをリストアップできます。
$ tmux ls
0: 1 windows (created Sat Aug 27 20:54:58 2022)[ 成功するための Linux 環境管理の方法を学ぶ ]
この時点で SSH 接続を切断できます。接続を切断しても、コマンドは引き続き実行されます。準備ができたら、サーバーに再接続し、既存の tmux セッションに再接続して中断したところから再開します。
$ tmux attach -t 0
Hello 72
Hello 73
Hello 74
Hello 75
Hello 76
^Cご覧のように、コマンドは引き続き実行され、引き続き画面にメッセージが表示されます。Ctrl+C を押すと、キャンセルできます。
tmux コマンドはすべて省略できます。たとえば、tmux a と入力すると、tmux attach と同様に機能します。
この機能だけをとっても tmux は優れたツールですが、デフォルトのキーバインドなど、さらに多くの機能を備えています。
tmux の基本的なキーバインド
tmux には、tmux セッション内でコマンドをすばやく実行するためのキーバインドがあります。特に便利なものをいくつかご紹介します。
まず、まだ tmux セッションに入っていない場合は、新しいセッションを作成します。新しいセッションを作成する際に、パラメーター -s {name} を tmux new コマンドに渡すことで、セッションに名前を付けられます。
$ tmux new -s Session1- Ctrl+B D:現在のセッションから接続解除する
- Ctrl+B %:ウィンドウを横方向に 2 つのペインに分割する
- Ctrl+B ":ウィンドウを縦方向に 2 つのペインに分割する
- Ctrl+B 矢印キー (左、右、上、下):ペイン間を移動する
- Ctrl+B X:ペインを閉じる
- Ctrl+B C:新しいウィンドウを作成する
- Ctrl+B N または P:次のまたは前のウィンドウに移動する
- Ctrl+B 0 (1、2...):番号で指定したウィンドウに移動する
- Ctrl+B ::コマンドラインを開いて、コマンドを入力する。Tab キーによる補完機能もあります。
- Ctrl+B ?:すべてのキーバインドを表示する。Q を押して終了します。
- Ctrl+B W:パネルを開いて、複数のセッションのウィンドウ間を移動する
その他のキーバインドについては、tmux man ページを参照してください。
[ キーバインドをいつでも使えるように tmux チートシートをダウンロードする ]
マウスを使う
tmux はキーボードを使った操作が一般的で、コマンドの実行、新しいペインの作成、ペインのサイズ変更を簡単に行えるよう、さまざまなキーバインドが用意されています。tmux はマウスを使った操作も可能ですが、デフォルトではマウス操作は無効になっています。有効にするには、まず Ctrl+B : と入力してコマンドモードに入り、次に set -g mouse コマンドでマウスをオン (またはオフ) に切り替えます。
これで、マウスを使ってペインやウィンドウを切り替えたり、サイズを変更したりできるようになります。tmux バージョン 3 以降は、マウスで右クリックしてコンテキストメニューを開くこともできます。
このメニューの内容は、右クリックした際にカーソルの下にあった画面の表示内容に応じて変わります。
[ よく使うコマンドをすぐに確認できる Linux コマンドチートシートはこちら ]
tmux を設定する
tmux 設定ファイルを修正することで、tmux 設定を永続的に変更できます。デフォルトでは、このファイルは $HOME/.tmux.conf に保存されています。
たとえば、デフォルトのプレフィックスキーの組み合わせは Ctrl+B ですが、この組み合わせはやや押しにくく、両手が必要です。設定ファイルを編集することで、これを別の組み合わせに変更できます。私自身は、Ctrl+A をプレフィックスキーにしています。この設定を行うには、新しい設定ファイルを作成し、次の行を追加します。
$ vi $HOME/.tmux.conf
# Set the prefix to Ctrl+a
set -g prefix C-a
# Remove the old prefix
unbind C-b
# Send Ctrl+a to applications by pressing it twice
bind C-a send-prefix
:wqこれで、このマシンで tmux セッションを開始すると、まず Ctrl+A を押してから上記のコマンドを実行できます。他の tmux キーバインドやコマンドを変更または追加する場合も、設定ファイルを使用します。
[ Linux にアプリケーションをインストールするためのガイドを入手する ]
ステータスバーをカスタマイズする
tmux のステータスバーは完全にカスタマイズ可能です。各セクションの色や表示内容を変更できます。オプションが豊富すぎて、すべてを取り上げようと思うともう 1 つ記事が必要になるので、まずは基本から説明します。
ステータスバー全体が標準の緑一色だと、各セクションを簡単に見分けられません。特に、開いているウィンドウの数や、どのウィンドウがアクティブなのかを把握しづらくなります。
ステータスバーの色を変えることで、この状況を改善できます。まず、Ctrl+B : (先ほどのプレフィックス設定変更を行った場合は Ctrl+A :) を入力してコマンドモードに入ります。次に、以下のコマンドで色を変更します。
- ステータスバーの背景色を変更する:
set -g status-bg cyan - 非アクティブなウィンドウの色を変更する:
set -g window-status-style bg=yellow - アクティブなウィンドウの色を変更する:
set -g window-status-current-style bg=red,fg=white
永続的に変更するには、これらのコマンドを設定ファイルに追加します。
この設定により、ステータスバーが見やすくなり、どのウィンドウがアクティブなのかが一目瞭然になります。
次のステップ
tmux は、リモート接続を保護するための優れたツールであり、ターミナルを長時間使用する際に便利です。この記事で取り上げたのは基本的な機能のみであり、これ以外にも多くの機能があります。tmux に関するその他の情報については、公式の Wiki ページを参照してください。
公式以外のプラグインを使って、tmux の機能を拡張することもできます。これらのプラグインは、コマンドを追加し、Vim などのアプリケーションと統合し、ステータスバーに新しい機能を追加します。詳しくは、tmux プラグインプロジェクトをご覧ください。
執筆者紹介
Ricardo Gerardi is a Principal Consultant at Red Hat, having transitioned from his previous role as a Technical Community Advocate for Enable Sysadmin. He's been at Red Hat since 2018, specializing in IT automation using Ansible and OpenShift.
With over 25 years of industry experience and 20+ years as a Linux and open source enthusiast and contributor, Ricardo is passionate about technology. He is particularly interested in hacking with the Go programming language and is the author of Powerful Command-Line Applications in Go and Automate Your Home Using Go. Ricardo also writes regularly for Red Hat and other blogs, covering topics like Linux, Vim, Ansible, Containers, Kubernetes, and command-line applications.
Outside of work, Ricardo enjoys spending time with his daughters, reading science fiction books, and playing video games.
類似検索
More than meets the eye: Behind the scenes of Red Hat Enterprise Linux 10 (Part 6)
Red Hat Enterprise Linux now available on the AWS European Sovereign Cloud
The Overlooked Operating System | Compiler: Stack/Unstuck
Linux, Shadowman, And Open Source Spirit | Compiler
チャンネル別に見る
自動化
テクノロジー、チームおよび環境に関する IT 自動化の最新情報
AI (人工知能)
お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート
オープン・ハイブリッドクラウド
ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。
セキュリティ
環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報
エッジコンピューティング
エッジでの運用を単純化するプラットフォームのアップデート
インフラストラクチャ
世界有数のエンタープライズ向け Linux プラットフォームの最新情報
アプリケーション
アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細
仮想化
オンプレミスまたは複数クラウドでのワークロードに対応するエンタープライズ仮想化の将来についてご覧ください