Terminal を画面分割したり、マルチセッションにできる。とにかくすごい。
ログを表示しながら横でテスト通信走らせてログの挙動を見たり、通信が切れて ssh が broken pipe
してしまってもサーバー上の処理は残したままにできたり。
(なのでバックグラウンドでデーモン走らせず tmux のセッションでウェブサーバーをフロント起動しておいてサービス運営している人とかも見たことある。メンテの時にドキドキしそう...。)
インストール
OS X
$ brew install tmux
Cent OS (EPEL とか)
$ yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/tmux-1.6-3.el6.x86_64.rpm
tmux のコマンド・使い方
tmux を開始してセッションを新規作成
$ tmux
tmux コマンドで非 tmux 状態から開始。tmux 中にさらに tmux を実行してネストすることはできません。
セッションを抜ける(デタッチ)=セッションは残る
control
+b
→ d
control
+b
した後、手をキーボードから離して、d
。
この control
+b
はデフォルトのバインドキーで、変えることもできる。
tmux を再起動しつつ、直近のセッションに入る(アタッチ)
$ tmux attach
または
$ tmux a
起動していたセッション番号を指定してアタッチ
$ tmux a -t セッション番号
セッション一覧表示
$ tmux ls
セッションに接続している接続元一覧
$ tmux lsc
tmux の画面分割・マルチセッションの概念
Session:画面左下に [1] とか [2] とか書かれている。セッション間の移動はデタッチ→アタッチ。
┗Window:画面のこと。0:bash* 1:bash とか書かれてる。* が付いている奴が選択中。
┗Pane:画面を分割してできた領域。ペイン。
基本的にはプロジェクト単位とかサービス単位でセッションがあって、ログ見つつ作業するウィンドウ+完全に作業なウィンドウ+ブログ書くウィンドウとかになったりするんじゃなかろうか。
Window を追加
control
+b
→ c
create の略かしら
Window を移動
control
+b
→ n
または p
next / previous の略かしら
Windows を閉じる
$ exit
Window に名前をつける
control
+b
→ ,
Window を一覧表示
control
+b
→ w
画面を左右分割 (Pane を追加)
control
+b
→ shift
+5
(%
)
上下分割 (Pane を追加)
control
+b
→ shift
+'
("
)
Pane を移動
control
+b
→ o
または
control
+b
→ 方向キー
Pane を分割終了
control
b
→ !
セッション名をつけてセッションを作成
$ tmux new -s セッション名
セッション名の変更
$ tmux rename -t 0 hoge
セッションを削除:直近のセッションを削除
$ tmux kill-session
セッションを削除:指定して削除
$ tmux kill-session -t セッション名
セッションを削除:全削除
$ tmux kill-server
コマンドヘルプ
control
+b
→ ?
tmux をカスタマイズする
~/.tmux.conf
ファイルを作成して tmux をカスタマイズすることができます。
$ vi ~/.tmux.conf
コンフィグファイルを反映
$ tmux source-file ~/.tmux.conf
.tmux.conf 例
# バインドキーを control b から control t に変更
unbind C-b
set -g prefix C-t
bind C-t send-prefix
# 日本語対応
setw -g utf8 on
set -g status-utf8 on
# バインドキーを vi 風に
set-window-option -g mode-keys vi
# 256 色対応
set -g default-terminal "xterm-256color"
set -g terminal-overrides "term:colors=256"
set -g display-time 2000
# 異なるサイズの端末からアクセスした時にリサイズ
setw -g aggressive-resize on
# マウススクロール反映
set-window-option -g mode-mouse on