feb19

Nobuhiro Takahashi
Designer / Engineer

「tmux」を使って SSH ログインでのサーバー作業を効率化する

date
2015.8.22(Sat.)
tags
macOStmuxTerminal

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+bd
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+bc
create の略かしら

Window を移動

control+bn または p
next / previous の略かしら

Windows を閉じる

$ exit

Window に名前をつける

control+b,

Window を一覧表示

control+bw

画面を左右分割 (Pane を追加)

control+bshift+5 (%)

上下分割 (Pane を追加)

control+bshift+' (")

Pane を移動

control+bo

または

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
著者: @feb19