サーバ運用をしている方は、自端末からTeraTermなどのターミナルエミュレータ(※以後ターミナル)を利用してLinuxサーバに接続し、業務を行っているケースが多くあると思います。
「tmux」とは
サーバー上でプログラムをバックグラウンドで実行し、デーモンとして動作させることができます。
これにより、プログラムがサーバーから切断された場合でも、実行を続行できるようになります。
さらに、サーバー上で複数のターミナルウィンドウを開いて、それらを柔軟に切り替えたり、同時に表示したりできます。
他にも便利な機能はありますが、主にこの「2つの便利な機能」を利用すると、サーバ運用の効率がアップするので深堀りして解説します。
但し、
サーバの再起動・停止をすると、この便利な機能は、リセットされますので注意してください。
■tmuxの便利な機能その1
突然、TeraTermで接続していたサーバと接続が切れても、実行中の作業は維持しており、TeraTermで再接続すると続きから作業を再開できます。
■tmuxの便利な機能その2
サーバに一度のTeraTerm接続で、複数の仮想的なターミナルウィンドウを開くことができます。
複数のターミナルを切り替えたり、同時に表示させたりできます。
tmuxのコマンドとキーコンビネーション対比表
tmuxコマンド実行でセションを開始し、例えば、下記の2つ操作方法は同じ意味になります。
- 「tmux new-window」とコマンド実行する方法
- (「【Ctrl】 + b 」キー押下後、「c」キー押下)とプレフィックスキー(【Ctrl】 + b)と別のキーを押すキーコンビネーション(ショートカットキー)を利用してコマンドを実行する方法
この様に、同じ意味なるコマンドとキーコンビネーションの対比表を作成したので参考に利用ください。
セッションの操作で利用
コマンド | キーコンビネーション | 説明 |
---|---|---|
tmux tmux new -s 【セッション名】 | - | 新規セッションを開始 「-s」:指定した【セッション名】で新規セッションを開始 【セッション名】の指定がない場合は「0」から順番に自動で付与 ※tmuxのセッションを開始(接続)する前に実行するコマンド |
tmux ls tmux list-session | - | セッションの一覧を表示 |
- | 【Ctrl】+b, s | セッションの一覧を詳細表示 |
tmux detach-client | 【Ctrl】+b, d | セッションをデタッチする (切り離す/離脱する) |
tmux attach-session tmux a tmux attach-session -t 【セッション名】 tmux a -t 【セッション名】 | - | 直近でデタッチしたセッションにアタッチ(接続する) 「-t」:指定した【セッション名】にアタッチする ※tmuxのセッションを開始(接続)する前に実行するコマンド |
tmux kill-session tmux kill-session -t 【セッション名】 exit | - | セッションを完全に終了 「-t」:指定した【セッション名】を終了する ※セッション内で実行中のすべてのウィンドウ、ペインを終了 |
tmux kill-server | - | すべてのtmuxサーバを完全に停止 ※tmuxのセッション、ウィンドウ、ペインをまとめて終了(復元不可) |
ウィンドウの操作で利用
コマンド | キーコンビネーション | 説明 |
---|---|---|
tmux new-window | 【Ctrl】+b, c | 新しいウィンドウを作成 |
tmux next-window | 【Ctrl】+b, n | 次のウィンドウに切り替え |
tmux previous-window | 【Ctrl】+b, p | 前のウィンドウに切り替え |
- | 【Ctrl】+b, w | 視覚的にウィンドウを選択 ※切り替えたいウィンドウをカーソルキーで選択して実行(Enterキー)で切り替えできます。 |
tmux lsw tmux lsw -a | - | ウィンドウの一覧を表示 「-a」:別のセッションのウィンドウの一覧も表示する |
tmux rename-window | 【Ctrl】+b, , | 現在のウィンドウ名を変更 |
tmux kill-windows tmux kill-windowss -t 【ウィンドウ番号】 exit | 【Ctrl】+b, & | 現在のウィンドウを削除 「-t」:指定した【ウィンドウ番号】を終了する ※キーコンビネーションで実行した場合は、(y/n)の終了確認をします。 |
ペインの操作で利用
コマンド | キーコンビネーション | 説明 |
---|---|---|
tmux split-window -v | 【Ctrl】+b, % | ウィンドウを左右に分割 |
tmux split-window -h | 【Ctrl】+b, " | ウィンドウを上下に分割 |
tmux display-panes | 【Ctrl】+b, q | 分割された[ペイン番号]を確認 ※操作画面を切り替えたい時に利用 ※ペイン番号は「0」から昇順で割り振れます ※ペンイン番号は、左右なら左から順番に割り振られます ※ペンイン番号は、上下なら上から順番に割り振られます |
tmux select-pane -t [ペイン番号] | 【Ctrl】+b, [矢印]キー | 分割されたペインの操作画面を移動 |
- | 【Ctrl】+b, z | 分割されたペインの操作画面を最大化 再度、実行すると元に復帰 ※操作画面だけを最大化され表示 ※他のペインは終了されていません |
- | 【Ctrl】+b, [スペース]キー | 実行するたびに、分割されたペインのレイアウトをいろいろ変更 |
tmux swap-pane -U | 【Ctrl】+b, { | 現在のペインを前方に入れ替え ※[ペイン番号]を小さい番号に切り替える |
tmux swap-pane -D | 【Ctrl】+b, } | 現在のペインを後方に入れ替え ※[ペイン番号]を大きい番号に切り替える |
tmux kill-pane tmux kill-pane -t 【ペイン番号】 exit | 【Ctrl】+b, x | 現在のペインを削除 「-t」:指定した【ペイン番号】を終了する |
その他の操作で利用
コマンド | キーコンビネーション | 説明 |
---|---|---|
tmux list-commands | - | 使用可能なtmuxコマンドの一覧を表示 |
- | 【Ctrl】+b, ? | 使用可能なtmuxのキーコンビネーションの一覧を表示 |
tmux scroll-up tmux scroll-down | 【Ctrl】+b, PgUp 【Ctrl】+b, PgDown | ペイン内の上下にスクロール ※tmuxのセッション内ではマウスによるスクロールができません。有効にするには、「~/. tmux.conf」 という名前の設定ファイルを編集で可能ターミナルによって機能しない場合あり #マウススクロールを有効にする set -g mouse on |
- | 【Ctrl】+b, : | tmuxコマンドのコマンドプロンプトを表示 ※「:」キー入力後にコマンドを入力するとそのコマンドが実行 ※操作画面が実行中でプロンプトが返ってこない状況化でtmuxコマンドを実行することが可能 例 「tmux kill-session」を実行したい場合 【Ctrl】+b, :キー入力後、「kill-session」と入力してコマンドを実行 ※tmuxの入力は不要 |
tmuxの使い方
tmuxのインストール
Linuxサーバ系ではパッケージをインストールします。
dnf install -y tmux
tmuxの利用方法
この利用方法で「■tmuxの便利な機能その1」を確認できます。
1.tmuxを開始してセッション接続する
1-1
TeraTermでサーバへ接続
※tmuxコマンド実行前の状態
ーーーーーーーーー>
tmuxコマンドを実行
1-2
tmuxのセッションへ接続完了
※tmuxコマンド実行後の状態
※画面下にtmuxのステータスバーが表示
tmux
1-3
通常通り作業を実施
例
viエディターでファイルを編集
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
2.tmuxのセッション接続からデタッチ(離脱)する
2-1
ファイル編集中(1-3の状態)にtmuxのセッションからデタッチ
tmux detach-client
または、「【Ctrl】+b」キー押下後,「d」キー押下」
->今回は、ファイル編集中だったので「「【Ctrl】+b」キー押下後,「d」キー押下」を実行してデタッチ
※「「【Ctrl】+b」キー押下後,「:」キー押下後,「detach-client」と入力して実行」でもデタッチ可能
2-2
デタッチしたセッションを確認
tmux ls
※tmuxのセッションを抜けただけなのでファイル編集中のセッションは保持
2-3
TeraTeamの接続を終了(デタッチしてから「exit」する)
exit
3.デタッチしたtmuxのセッションへアタッチする
3-1
TeraTeamでサーバへ再接続してデタッチしたセッションへアタッチ
tmux a
3-2
tmuxのセッションをデタッチする前にファイル編集していた状態を維持
例
「1-3」でファイル編集していた状態を維持
※作業中にTeraTermのセッションが切れても再接続することで作業を継続することができます。
4.tmuxのセッションを終了する
4-1
継続作業が無く完全にセッションを終了
※アタッチによる継続操作が不可
tmux kill-session -t 0
tmux ls
->自身が接続しているtmuxのセッションを終了させたい場合「 tmux kill-session」とセッション名の省略が可能
->tmuxのセッションに接続している状態で、「exit」コマンドを実行するとtmuxのセッションは終了(※TeraTeamは終了しません)
tmuxのセッション・ウィンドウ・ペインについて
ここでの解説で「■tmuxの便利な機能その2」を確認できます。
サーバ運用でよく利用する方法を実例を交えて解説します。
■tmuxのセッション
複数のユーザがサーバを利用するときに、一般的に1セッション1ユーザが利用します。セッション接続すると最低1つのウィンドウが準備されています。
■tmuxのウィンドウ
ウィンドウは、一人の利用者が利用する操作画面になります。複数の操作を別々に実施したい場合、ウィンドウを分けることで操作画面を増やすことができます。
■tmuxのペイン
ペインは、1つのウィンドウ画面に複数の操作画面を同時に表示させたい時に利用する為のものです。
tmuxのセッション
ユーザ毎にそれぞれTeraTermでサーバに接続してtmuxのセッションに接続します。
以下は
・「ユーザ1」が「user1」セッションを利用
・「ユーザ2」が「user2」セッションを利用
とすることで、ユーザ毎に利用しているセッションを分けて管理できます。
「user1」セッションの画面
tmux new -s user1
「user2」セッションの画面
tmux new -s user2
tmuxのウィンドウ
一度のTeraTerm接続で複数のターミナルウィンドウを利用できます。
以下は
・「ユーザ1」が「user1」セッションで2つのウィンドウを利用
することで、2つの作業を分けて利用できます。
「user1」セッションの画面
tmux new -s user1
tmux new-window
キーコンビネーション:【Ctrl】+b, c
tmux ls
「0」ウィンドウの画面
「1」ウィンドウの画面
※「ウィンドウ切り替え」
次のウィンドウ
「【Ctrl】+b」キー押下後,「n」キー押下
前のウィンドウ
「【Ctrl】+b」キー押下後,「p」キー押下
tmuxのペイン
複数のターミナルウィンドウを分割して同時に閲覧することができます。
以下は
・「ユーザ1」が「user1」セッションで2つのウィンドウを分割して利用
することで、2つの作業を同時に閲覧することができます。
「user1」セッションの画面
tmux new -s user1
tmux ls
上下にペインを分割
tmux split-window -v
左右にペインを分割
tmux split-window -h
※ペインの移動(操作画面を切り替え)
上下左右のペイン
「【Ctrl】+b」キー押下後,「矢印」キー
まとめ:tmux利用のメリット
- tmuxのセッションをデタッチすることで、実行中の作業は継続されTeraTermを終了しても作業の再開が可能
※作業途中でもTeraTermでのリモート接続を終了することが可能 - サーバとのリモート接続によるセッション断に影響されることなく、作業継続が可能
※突然、サーバとの接続が切れても、サーバに再接続し、tmuxのアタッチをすることで、サーバとの接続が切れる前の状態から作業継続が可能 - TeraTermなどのターミナルをいくつも起動する必要がなく画面切り替えにより複数の作業が可能
- TeraTermの画面を分割することで複数の画面を同時に参照(画面分割)することが可能
コメント