tmux
tmuxは、ターミナル上の複数の作業を整理し、作業状態を保持するための仕組み(ターミナルマルチプレクサ)である。
ログ確認、コマンド実行、エディタ操作、テスト実行などを1つの作業環境の中で整理しやすくする。
特に、SSH接続が切れても作業環境を残せる点が重要であり、リモートサーバーでの開発や運用に向いている。
単なる画面分割ツールではなく、ターミナル作業全体をセッションとして管理する仕組みとして理解するとよい。
問題意識
tmuxは、ターミナル作業で起こりやすい「複数の作業画面を行き来しにくい」「接続が切れると作業状態が失われる」といった問題を扱う。
通常のターミナルだけで複数の作業を並行すると、ウィンドウやタブが増え、作業の対応関係が分かりにくくなることがある。tmuxは、複数の作業画面を1つのセッション内にまとめることで、ターミナル上の作業を管理しやすくする。
また、tmuxのセッションはターミナル接続から切り離して保持できる。特にSSHでリモートサーバーに接続して作業する場合、接続が切れてもサーバー側に作業環境を残せるため、後から同じ状態に戻ることができる。
仕組み
tmuxは、ターミナル上で起動する独立したプログラムである。
ターミナルそのものの標準機能ではなく、ターミナルとシェルの間に入って作業画面を管理する。
tmuxの作業環境は、主に session、window、pane という単位で構成される。
session は作業環境全体のまとまり、window はその中の作業画面、pane は1つの画面を分割した領域である。
位置づけ
tmuxは、ターミナルアプリのタブ機能や画面分割機能と似た面を持つ。ただし、単なる表示上の分割ではなく、作業環境をセッションとして保持できる点に特徴がある。
ローカル環境でIDEやGUIターミナルを使っている場合には、tmuxが必須とは限らない。
一方で、リモート環境での作業、長時間実行するコマンド、複数プロセスの監視などでは、tmuxの利点が大きくなる。