Linuxコマンド辞典 tmuxコマンド(ユーティリティ)

1つの画面で複数の端末を管理する「tmux」コマンドの概要と使い方を記載しています。「sessions should be nested with care, unset $TMUX to force」エラーメッセージについても記載。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

概要・使用方法

書式

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

screenのような端末マルチプレクサです、1つの端末画面に複数の仮想端末画面を開くことができます。「tmux」で実行している端末は、セッションとして管理されます。この中でコマンドを実行していると、端末を閉じずにログアウトしてもセッションは残るので、処理に時間のかかるコマンドを実行した場合に終了を待つ必要がなくなります。

リモートログインして「tmux」を実行した場合、作業中にネットワークトラブルでサーバーとの接続が切れても、再接続後にアタッチすればそのセッションを再開し作業を続けることができます。

セッションのすべてのシェルを終了すれば、「tmux」は終了します。セッション残したまま「tmux」から離れることをデタッチと言います。残したセッションにtmuxで再接続することをアタッチと言います。tmuxを起動するとまず1つの仮想端末が開き、シェルが起動します。1つのセッションで複数の端末を開くことができます。1つの端末を左右上下に分割して複数プログラムの処理結果を見比べることもできます。これらはペインと言います。

tmuxは実行中、コマンドを受け付けることができます。このコマンドを利用することで端末やペインの作成/移動/削除などを行うことができます。コマンドの前に「プレフィックスキー」を入力します。デフォルトでプレフィックスキーは「Ctrl」+「b」です。コマンドキーはこのプレフィックスキーの後に1つキーを押します。例えば「新しい端末を作成する」コマンドの場合は、「Ctrl+b」 「c」を実行します。

tmuxセッションから新しいtmuxセッションを開始しようとすると「sessions should be nested with care, unset $TMUX to force」エラーメッセージが表示される。
これは、アクティブなtmuxセッションにネストすることは、「tmux」が好ましくないと言っています。
「tmux」セッションから以下の方法でネストすることもできます。

$ TMUX='' tmux

オプション

-2256色をサポートする
-f ファイル名指定したファイルを設定ファイルとして読み込む

コマンド

attach-session(attach,a)セッションをアタッチする。「-t セッション番号」を指定すればそれをアタッチする
list-sessions(ls)セッションすべてをリスト表示する
kill-session -t セッション番号指定したセッションを終了する
new-session コマンド指定したコマンドを実行するセッションを作成する。コマンドが囚虜するとセッションを終了する

主要なコマンド

キー操作説明
Ctrl + btmuxコマンドを入力する前のプレフィックスキー(カスタマイズ可能)
Ctrl + b oペインの表示順序を回転させる
Ctrl + b ztmuxクライアントをサスペンスする。サスペンスから戻る場合はfgを使う
Ctrl + b “「ダブルクォート」で現在のペインを上下に分割する
Ctrl + b c新しい仮想端末を作成する
Ctrl + b dデタッチする
Ctrl + b n次の端末に移動する
Ctrl + b p前の端末に移動する
Ctrl + b o次のペインに移動する
Ctrl + b t時刻を表示する
Ctrl + b x現在のペインを終了する
Ctrl + b [コピーモードに移行する
Ctrl + b ]コピーモードでためたバッファを貼り付ける
Ctrl + b 数字入力した数字の仮想端末を表示

セッション一覧を表示する

$ tmux ls

実行結果

[root@localhost ~]# tmux ls
0: 1 windows (created Mon Oct 31 09:30:08 2022) [120x44] (attached)

デタッチされているセッションをアタッチする

$ tmux a -t セッション番号

実行結果

[rin@localhost ~]$ tmux ls
0: 1 windows (created Mon Oct 31 10:16:24 2022) [179x44]
[rin@localhost ~]$ tmux a -t 0

不要なセッションを終了させる。

$ tmux kill-session -t セッション番号

実行結果

[rin@localhost ~]$ tmux ls
0: 1 windows (created Mon Oct 31 10:16:24 2022) [179x44]
[rin@localhost ~]$ tmux kill-session -t 0
[rin@localhost ~]$ tmux ls
no server running on /tmp/tmux-1002/default
[rin@localhost ~]$