MAGAZINE
ルーターマガジン
tmuxの使い方入門
こんにちは!ルーター学生アルバイトのkondoです。
今回は、ターミナル操作が便利&快適になるソフトウェア、tmuxを紹介します。
目次
tmuxとは
仮想ターミナル(以下、ターミナルと記載)を複数立ち上げることができるソフトです。tmuxを使うと、以下のようなことができます。
- プロセスの管理が楽になります!
- 具体的には、tmuxを通してプロセスを実行することで、ログアウトしても処理を中断されずに実行できます。
- ターミナル作業が便利になります!
- 具体的には複数の画面の使い分けや、画面の分割表示ができます。
どうでしょうか?なかなか便利そうですね。早速使ってみましょう!
インストール
Macの場合、Homebrewを使ってインストールします。
brew install tmux
ubuntuの場合はこちらです。
apt install tmux
では、起動してみましょう。tmux
と打つだけです。
画面下に黄色いバーが出てきていればOKです。
tmuxの基本の説明
ここで、一旦tmuxの基本を説明しようと思います。
tmuxでは、ターミナルを複数立ち上げることができ、これを「セッション」といいます。
- セッション0
- セッション1
セッションの次の層として「ウィンドウ」があります。ウィンドウはその名前の通り、表示されている物理的な画面1つを指しているものです。それぞれのセッションは1つ以上のウィンドウを持っています。
- セッション0
- ウィンドウ0
- ウィンドウ1
- セッション1
- ウィンドウ0
そして、ウィンドウの下の層として「ペイン」があります。これは、画面を分割したときの単位です。ウィンドウは1つ以上のペインを持っています。
- セッション0
- ウィンドウ0
- ペイン0
- ペイン1
- ウィンドウ1
- ペイン0
- ウィンドウ0
- セッション1
- ウィンドウ0
- ペイン0
- ウィンドウ0
この「セッション・ウィンドウ・ペイン」の概念を頭に入れておいて下さい。
また、tmuxで作られたターミナル上で、「tmuxのコマンド」を使うときは、prefix(プレフィックス)キーというものを押す必要があります。これはデフォルトではCtrlキーを押しつつbを押すことでprefixキーを押したことになる設定になっています。
プロセスの管理
先程tmux
と打って、下に黄色いバーが出ていますね?
この今の状態が、tmuxによって作られたターミナルの中にいる状態です。
- ログインしたターミナル
- tmuxによって作られてたターミナル(←今ココ)
という状況です。「tmuxによって作られてたターミナル」のことを、「セッション」といいます。セッションは複数立ち上げることができるので、今の「tmuxによって作られてたターミナル」を「セッション0」と言うことにします。
- ログインしたターミナル
- セッション0(←今ココ)
適当にコマンドを打ってみましょう。普段どおりに操作できます。
$ echo hogehoge
hogehoge
ここで、もとの「ログインしたターミナル」に戻ってみましょう。セッションから離れることをデタッチといいます。
Ctrlを押しながらbを一度押します(つまりprefixを押します)。その後、dを押します。
$ tmux
[detached (from session 0)]
$
と出てきて、下の黄色いバーはなくなり、元の「ログインしたターミナル」に戻れたかと思います。tmux ls
でセッションの状態を確認できます。
$ tmux ls
0: 1 windows (created Tue Dec 11 16:52:38 2018) [157x48]
この状態はさっきの図ではこんな感じです。
- ログインしたターミナル(←今ココ)
- セッション0
ここで注目したいのが、セッション0がまだ生きているということです。
今いる「ログインしたターミナル」からexit
でログアウトして、もう一度ターミナルアプリを起動し直して見ましょう。そして、tmux ls
でプロセスを確認してみましょう。
$ tmux ls
0: 1 windows (created Tue Dec 11 16:52:38 2018) [157x48]
上のように、セッション0が生きているのが確認できると思います。tmux a
と打ってみましょう。直前にいたセッションに移動(アタッチ)するコマンドです。以下のような表示がすでに存在していると思います。
$ echo hogehoge
hogehoge
$
hogehogeが残っていますね。つまり、tmuxのセッション内で行った操作は、セッションを破棄しない限りは消えないのです。
これを使うと、
ローカルからサーバーに接続
-> サーバーでtmux
と打ち、tmuxのセッションを作り、入る(セッションの作成&アタッチ)
-> できたセッションで時間のかかるプロセスを実行
-> セッションからデタッチ
-> exitでログアウトしてローカルに戻る
とすることで、「サーバーからログアウトしても処理を中断されずに実行」ができます。
nohupコマンドと違う点としては、この方法ならデタッチしたプロセスにアタッチし直せます。
tmuxのセッションについての操作をまとめるとこんな感じです。
(元のログインしたターミナルでの操作)tmux
新規セッションを作り、それにアタッチするtmux a
直前にいたセッションにアタッチするtmux ls
今あるセッションを全て表示するtmux kill-session -t 0
指定したセッションを破棄する(ここでは0のセッション)
(セッション内での操作)prefix + d
今いるセッションからデタッチするprefix + s
今あるセッションの一覧を表示する。セッションの移動もできる。
ターミナル作業を便利に
ここからは、作業が快適になるウィンドウ分け、ペイン分割について説明します。一旦全てのセッションを破棄するため、デタッチしたあとにtmux kill-server
と実行して下さい。そしてtmux
と実行し、新規セッションを立ち上げてください。
ウィンドウ分けから説明します。
tmuxセッションに入り、prefix + c をしてみて下さい。画面が新しくなったかと思います。これでウィンドウが増えました。
prefix + w でウィンドウの確認、選択ができます。
(0) - 0: 2 windows (attached)
(1) ├─> 0: bash- (1 panes) "MacBook-ea.local"
(2) └─> 1: bash* (1 panes) "MacBook-ea.local"
セッション0の、ウィンドウ1にいるのが確認できますね。
作業ごとにウィンドウを分けたりなどすると良いと思います。
続いてペイン分割です。prefix + " をしてみて下さい。下に画面が現れたかと思います。
これがペイン分割です。prefix + 方向キー でペインの移動ができます。prefix + % では、縦にペインを分割できます。どんどん増やしましょう!ペインを2つにすれば作業効率も2倍、3つにすれば3倍ですね!!(違います)
ウィンドウ、ペインに関する操作をまとめます。
(セッション内での操作)prefix + c
新規ウィンドウを作成し、移動prefix + w
ウィンドウを選択&移動prefix + &
今のウィンドウを破棄prefix + "
ペインを横分割prefix + %
ペインを縦分割prefix + 方向キー
ウィンドウ内でのペインの移動prefix + z
今いるペインを一時的に拡大(もう一度実行すると元に戻る)prefix + x
今いるペインを破棄
さいごに
紹介した機能の他にも、黄色いバーの見た目や内容をいい感じに設定したり、
画面の文字のコピーをvimのヴィジュアルモード風にできたり、
独自のキーバインドを設定したりなどができます。
tmuxを使って、ちょっと便利なターミナルを試してみてはどうでしょうか。
CONTACT
お問い合わせ・ご依頼はこちらから