tmux は GNU Screen のような仮想端末を提供します。
必要最小限の設定
~/.tmux.conf
# プレフィックスキー
set -g prefix C-t
# C-t C-t でトグル
bind C-t last-window
# Vim 風のキーバインド
setw -g mode-keys vi
# ステータスバーの色
set -g status-fg white
set -g status-bg black
setw -g window-status-current-fg black
setw -g window-status-current-bg yellow
# 履歴の長さ
set-option -g history-limit 10000
主要な操作
セッション名を指定して新規セッションを作成
$ tmux new -s セッション名
デタッチ
C-t d
セッション一覧を表示
$ tmux ls
アタッチ
直近のセッション
$ tmux a
セッション名を指定
$ tmux a -t セッション名
他のクライアントをデタッチしてからアタッチ
tmux a -d
tmux a -d -t セッション名
セッションの削除
$ tmux kill-session -t セッション名
ウィンドウの作成
C-t c
二つのウィンドウを行ったり来たり
C-t C-t
前後のウィンドウに移動
previous
C-t p
next
C-t n
ウィンドウの一覧
C-t w
ウィンドウ名の変更
C-t ,
セッション名の変更
C-t $
Vim 風の操作で過去のターミナル履歴を閲覧
C-t [
範囲選択の開始 (スペースキー) → 範囲選択の完了 (エンター) → 貼り付け (C-t ]
)
ヘルプ
C-t ?
ウィンドウを閉じる
C-t &
複数のサーバを同時操作
.tmux.conf
に以下の設定を追加します。C-t
e
で同時に複数ペインを操作できるようになります。
bind e setw synchronize-panes on
bind E setw synchronize-panes off
ペインを水平方向または垂直方向に追加
C-t %
C-t "
ペインを移動
C-t o
C-t ;
ペインを破棄
C-t x
ペインを整理
C-t space
ペインを拡大、戻す
C-t z
ペイン番号を環境変数で取得できます。
echo ${TMUX_PANE}
%7
echo ${TMUX_PANE} | sed 's/%//' | awk '{ printf "%04d\n", $1 }'
0007
bash スクリプトから設定
コマンドラインから tmux を設定することができます。以下の例は、複数サーバに同時に ssh を行いたい場合に便利です。
#!/bin/bash
set -eu
set -o pipefail
NAME="awesome-window"
LAYOUT="tiled" # "even-horizontal" "even-vertical"
CMDS=(
"ssh host1"
"ssh host2"
"ssh host3"
"ssh host4"
"ssh host5"
"ssh host6"
"ssh host7"
"ssh host8"
"ssh host9"
)
tmux new-window -n ${NAME}
for i in $(seq ${#CMDS[@]}); do
tmux send-keys -t ${NAME}.$(expr $i - 1) "${CMDS[$i - 1]}"
if [ $i -ne ${#CMDS[@]} ]; then
tmux split-window -t ${NAME}
tmux select-layout -t ${NAME} ${LAYOUT}
fi
done
tmux set-window-option -t ${NAME} synchronize-panes on
関連記事
- 使い所が難しいマイナーな運用コマンドコマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
- ipコマンドの基本的な使い方ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
- プロセス関連のコマンドプロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
- rpmとyumのチートシートrpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
- メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...