tmuxが便利すぎる

みなさん、お久しぶりです。この記事を見てくれてる人が、どの層かわからないけどね。

さて、久しぶりにnoteを書くわけですが、エンジニアの父と、研究室の先輩から同じくらいのタイミングで"tmux"をオススメされて、びっくりするくらい便利だったので、参考にした記事を引用しながら書いていこうと思います。久しぶりのnoteにいきなり技術記事書くなよって感じですがお許しを。

tmuxとは

tmux とは、 端末多重化ソフトウェア(terminal multiplexer)のことです。
ターミナル画面で、複数のセッションを起動したり、複数のウィンドウを作成したり、1 つのウィンドウで複数のペインに分割することができます。
分割することで、それぞれのペインやウィンドウなどで、それぞれ別々の操作を行うことが可能になります。

https://zenn.dev/azunasu/articles/25d9999ca0fb96

そもそもtmuxはなんぞやって話ですが、 『1つのターミナル上で複数のターミナルを立ち上げて同時並行で作業できる便利なやつ』です。私が現状使っているやり方ですが、セッションを使えば、『sshでリモート接続→tmuxでセッション立ち上げ→セッション上で機械学習のコード実行』の手順を踏むことで、セッションを消さなければローカル側のターミナルを閉じても大丈夫な、ドチャクソ便利な環境の出来上がりです。弊学で受けたJavaの授業よりも、tmuxの授業をやって欲しかったレベルで、知らなかったことが悔やまれます。

過去の自分の環境(上図)と現在の環境(下図)

tmuxを入れた時の自分の環境を図に表してみました。まあ、構造的にはほぼ変わらないんですが、これまでは、コードの実行中はローカルの電源を落とせなかったり、SSHの接続が切れてコードの実行が止まったりと色々な問題点がありましたが、tmuxでセッションを開いて、その上でコードを実行することで、セッションを閉じない限りはコードの実行が続くので、ターミナルを閉じても良くなり、かなり快適に研究できるようになりました。

インストール

私はaptを使って入れました(下記コード)が、gitからインストールする方法もあるそうです

sudo apt install tmux

aptで入れる際に、tmuxのパッケージが見つからなかったのでリポジトリを追加する作業が必要で、少し戸惑いました。参考サイト

使い方

セッションの立ち上げには"tmux"、セッションに名前をつけて立ち上げるためには"tmux new -s <セッション名>"、って感じで開きます。複数セッション立ち上げられるのが便利ですね。

# セッションを開く
tmux

# セッションを名前付きで開く
tmux new -s <セッション名>

# セッションを再開する
tmux a -t <セッション名>

使い方に関しては、いろんなサイトに書いてあるので私がメインで使っているものに絞りますが、セッションを開くコマンドと再開するコマンドさえ覚えておけば最初はなんとかなると思います。(コマンド参考サイト: tmuxを必要最低限で入門して使う)。まああと、セッションの削除とかは覚えといた方がいいかもしれないですね。
あとは開いたセッション上で、いつも通り"python train.py"みたいな感じで実行しちゃえば、セッションを削除しない限りは実行状態が続きます。ローカルのターミナルは閉じても大丈夫やし、閉じても大丈夫やからVPNも切っていいし、けどリモートは動いてるしって感じでSSHの良さが完璧に使えてるような気がしますね。

まとめ

機械学習エンジニア目線でのtmuxの使い方を軽く話してみました。セッションを複数作って管理してる方もいらっしゃるし、まだまだ便利な使い方のあるtmuxなので、これからも勉強していきたいと思います。

記事内で引用した記事以外にも参考にしたサイトがあるので、参考サイトに追加しておきます。

参考サイト

  1. 便利なtmuxの使い方をまとめてみる

  2. Ubuntu で tmux を使いたい!

  3. Ubuntuのaptで目当てのパッケージが見つからない!!!

  4. tmuxを必要最低限で入門して使う

  5. tmuxを使ってみたので良かった点まとめ

  6. tmuxを使いこなそう(ウインドウ、ペイン、セッション、アタッチ、デタッチ)

この記事が気に入ったらサポートをしてみませんか?