インフラ触るときに欠かせない「tmux」について

【結論】

・「tmux」とは、端末多重化ソフトウェアと呼ばれるもので、1つのターミナル上で複数のターミナルを立ち上げて同時並行で実行できる

・リモートサーバーでtmuxを実行しておくと、セッションが切れたりインターネット接続が途切れても、すぐに作業復帰が出来る

・そのほかにも、ショートカットキーや表示といった部分をカスタマイズできる

【目次】

【本題】

「tmux」について

「tmux」とは、1つのターミナル上で複数のターミナルを立ち上げて同時並行で実行できる端末多重化ソフトウェアです。

それだけ聞くと、ターミナルのタブ機能で代替え可能な様に感じるかもしれませんが、最大のメリットはインフラを触る時にあります。

リモートサーバーの作業でtmuxを利用するメリット

AWSなどのリモートサーバーにSSHで接続すると、途中でセッションが切れる事があります。

また、何か処理の重いコマンドやスクリプトを実行している最中に、PCがスリープしたり、インターネット接続が切れてしまうと、データの不整合が発生してバグに繋がってしまう危険性もあります。

そういった問題に対処する方法として、tmuxがあります。

リモートサーバーに接続してtmuxを起動すれば、もしローカルとリモートサーバーの接続が途中で切れても、リモートサーバー上にtmuxプロセスが残るので、作業を復帰させる事が出来ます。

これにより、作業が中断される心配は無くなります。

その他にも、フロントエンドとバックエンドのビルドが分かれていたり、マイクロサービスアーキテクチャの様な複数サービスを連携させる場合に、ターミナルから複数プログラムを実行させる使い方も出来ます。

導入方法

では導入方法ですが、まずはHomebrewでtmuxをインストールします。

$ brew install tmux

そして、下記コマンドで実行できます。

$ tmux

デタッチとアタッチ

先ほど、最大のメリットとして取り上げたリモートサーバーとの再接続についてですが、簡単に操作手順をご説明します。

まず、再接続できたという事が分かりやすいように、適当にコマンドを入力しておきます。

続いて「Ctrl + b」→「d」という順にキーを入力して、tmuxとの接続を一旦終了させます。

tmuxは基本的に「Ctrl + b(prefix key)」→「任意のキー」というショートカットキーで操作を行います。

そして再接続するのは、下記のコマンドでアタッチさせます。

$ tmux attach-session

そうすると、先ほど切れたtmuxとの接続を復帰させる事が出来ます。

他にもウィンドウを複数作成する機能など便利な使い方が多いので、ぜひ活用して行きたいものです。

参考情報

tmuxを必要最低限で入門して使う - Qiita

tmux基本まとめ - Qiita

tmuxを使い始めたので基本的な機能の使い方とかを整理してみた - Moved Permanently

インフラエンジニアならtmuxを使いこなしているか!? - Goalist Developers Blog