パッケージ探訪: tmux
2026年6月28日
著者: 竹洞 陽一郎
はじめに
今回は、Slackwareユーザーなら一度は使ってみてほしいターミナルマルチプレクサ、tmuxをご紹介します。
RLoginなどのSSHクライアントからリモートサーバーに接続している際、回線が途切れてもプロセスが死なない——そんな安心感を提供してくれるのがtmuxです。
特に、回線状況が不安定な環境から作業している場合には、とても便利です。
Claude CodeをSlackware上で稼働して、Tailscaleを通してリモート端末から接続しているような場合には、接続が切れたとしても、稼働し続けます。
また、リモートからSSHで作業をして、一旦は作業を中断してSSHを閉じ、後から再開したいという場合にも、とても便利です。
tmuxとは
tmux(terminal multiplexer)は、1つのターミナルウィンドウの中で複数の仮想端末を管理できるオープンソースのツールです。
同種のツールであるGNU screenと同様の機能を持ちながらより使いやすく改善されており、現在のLinux環境では事実上の標準ツールとなっています。
tmuxが提供する最大の価値はセッションの永続性です。SSHが切断されてもtmuxセッションはサーバー上で生き続け、再接続後にそのまま作業を再開できます。 長時間のビルドやバッチ処理、ログ監視など、中断したくない作業に特に威力を発揮します。
tmuxの主な概念
tmuxは3層の階層構造で端末を管理します。
- セッション(Session)
-
tmuxの最上位の作業単位です。サーバー上で独立して存在し、クライアントからデタッチ(切り離し)してもバックグラウンドで動作し続けます。
プロジェクトや用途ごとにセッションを分けて管理するのが一般的な使い方です。 - ウィンドウ(Window)
-
セッション内に複数作成できる画面の単位で、ブラウザのタブに相当します。
ステータスバーに番号と名前で一覧表示され、素早く切り替えることができます。 - ペイン(Pane)
- ウィンドウを縦・横に分割した個々の端末領域です。1つのウィンドウ内でログ監視・コマンド実行・ファイル編集を同時に行うことができます。
インストール
Slackwareでは、パッケージスロットap/(アプリケーション系パッケージのカテゴリ)以下にtmuxが収録されています。
Slackware-currentであれば最新版が収録されています。
# バージョン確認(表示されるバージョンはお使いの環境によって異なります) tmux -V tmux 3.5a
基本的な操作
tmuxの操作はすべてプレフィックスキーと呼ばれる特定のキーを最初に押してから、続けてコマンドキーを入力する形式です。
デフォルトのプレフィックスキーは Ctrl+b で、これを押してから離し、次のキーを押すことで各操作を呼び出します。
例えばデタッチであれば Ctrl+b → d という操作になります。
プレフィックスキーは ~/.tmux.conf で自由にカスタマイズできます。
GNU screenに慣れているユーザーは Ctrl+a に変更することが多く、後述の設定ファイルのセクションで変更方法を紹介しています。
セッション管理
# セッション名を指定せずに起動する場合はtmuxとだけ打てばよい # その場合、最初のセッションには "0" という名前が付き、以降は "1"、"2"… と増えていく tmux # -s オプションでセッション名を指定して新規作成(ここでは "work" という名前) # 複数のセッションを使い分ける場合は名前を付けた方が管理しやすい tmux new -s work # 現在存在するセッションの一覧を表示する tmux ls # -t オプションで対象セッション名を指定してアタッチ(再接続)する tmux attach -t work # セッションが1つだけの場合は -t を省略できる(複数ある場合はエラーになる) tmux attach # -t オプションで対象セッション名を指定してセッションを削除する tmux kill-session -t work
よく使うキーバインド
| キー | 操作 |
|---|---|
| Ctrl+b → d | セッションからデタッチ(セッションはバックグラウンドで継続) |
| Ctrl+b → c | 新しいウィンドウを作成 |
| Ctrl+b → n | 次のウィンドウへ移動 |
| Ctrl+b → p | 前のウィンドウへ移動 |
| Ctrl+b → 0〜9 | 番号指定でウィンドウへ直接ジャンプ |
| Ctrl+b → w | ウィンドウ一覧を対話的に表示・切替 |
| Ctrl+b → , | 現在のウィンドウ名を変更 |
| Ctrl+b → & | 現在のウィンドウを閉じる(確認あり) |
| Ctrl+b → % | ペインを左右に分割 |
| Ctrl+b → " | ペインを上下に分割 |
| Ctrl+b → 矢印キー | ペイン間を移動 |
| Ctrl+b → Ctrl+矢印キー | ペインのサイズを1セル単位で変更 |
| Ctrl+b → Alt+矢印キー | ペインのサイズを5セル単位で変更 |
| Ctrl+b → x | 現在のペインを閉じる(確認あり) |
| Ctrl+b → z | 現在のペインを一時的に全画面化(再度で元に戻る) |
| Ctrl+b → [ | コピーモード開始(矢印キーで過去の出力をスクロール) |
| Ctrl+b → ] | コピーモードでコピーしたテキストを貼り付け |
| Ctrl+b → ? | キーバインド一覧を表示 |
SSH切断時にプロセスはどうなるか
tmuxの価値を理解するために、まずSSHが切断されたときに何が起きるかを知っておく必要があります。
SSHセッションが切断されると、シェルにSIGHUP(ハングアップシグナル)が送られます。
シェルはそれを受けて、自分が起動したすべての子プロセスにもSIGHUPを転送し、強制終了させます。
SSH切断
→ シェルにSIGHUP送信
→ 子プロセス(vim・スクリプト・ビルドなど)にSIGHUP転送
→ すべて強制終了
具体的には以下のような被害が発生します。
- 実行中の長時間スクリプト
- 途中で強制終了されます。処理が半端な状態で止まるため、データの整合性が損なわれることもあります。
- vim・emacsなどのエディタ
- 編集中のファイルはスワップファイルが残りますが、保存していない変更は失われます。
- パッケージのインストール・アップグレード
-
slackpkg upgrade-allやmake installの途中で中断されると、パッケージが壊れた状態になることがあり、最悪の場合はシステムが起動しなくなる危険もあります。 - ログ監視・tail -f
- 単純に終了します。再接続後は最初からやり直しになります。
なお、tmuxを使わない場合の応急処置として nohup コマンドがあります。
nohup ./long_script.sh &
nohup はSIGHUPを無視してプロセスをバックグラウンドで継続させますが、出力は nohup.out に書き出されて画面には表示されなくなり、対話的な操作もできないため、tmuxの本格的な代替にはなりません。
SSH切断対策としての活用
tmuxはSSHセッションとは独立したプロセスとしてサーバー上で動作しています。
そのため、SSHが切断されてもtmuxサーバープロセス自体は死なず、その中で動くシェルやプロセスにSIGHUPが届きません。
SSHセッション(切断されても)
└── tmuxサーバープロセス(生き続ける)
└── シェル・作業プロセス(生き続ける)
例えば、サーバーへのパッケージ適用や長時間の処理を実行中にネットワークが切断された場合でも、tmuxセッション内のプロセスはサーバー上で動き続けます。
# サーバーにSSHログイン後、-s オプションで "deploy" という名前のセッションを新規作成する tmux new -s deploy # セッション内で時間のかかる処理を実行する(接続が切れても中断されない) ./update-packages.sh # ネットワークが切断され、再度SSHログインした後に -t オプションで対象セッションを指定してアタッチする tmux attach -t deploy # → セッション内のプロセスはそのまま継続している
実践的な活用パターン
複数サーバーの並行監視
# 1つのウィンドウを左右に分割してサーバーAとBを同時監視 # Ctrl+b % で現在のウィンドウを左右に2分割する(分割後はカーソルが右ペインに移る) Ctrl+b % # 左ペインに移動する Ctrl+b <左矢印キー> # 左ペインでサーバーAのアクセスログをリアルタイム監視 tail -f /var/log/nginx/access.log # Ctrl+b を押してから矢印キー(→)で右ペインに移動する Ctrl+b <右矢印キー> # 右ペインから別のサーバーにSSH接続する ssh server-b
プロジェクト単位でセッションを分ける
# -s オプションで用途別の名前を付けてセッションを作成する # 各コマンドの後に Ctrl+b d でデタッチしてから次のセッションを作成する tmux new -s client-a # クライアントAの作業セッション(作成後に Ctrl+b d でデタッチ) tmux new -s monitoring # 監視専用セッション(作成後に Ctrl+b d でデタッチ) tmux new -s build # ビルド・デプロイ専用セッション # tmux ls でセッション一覧を確認する(名前・ウィンドウ数・作成日時が表示される) tmux ls build: 1 windows (created Sat Jun 28 09:12:00 2026) client-a: 3 windows (created Sat Jun 28 08:45:00 2026) monitoring: 2 windows (created Sat Jun 28 08:46:00 2026)
設定ファイル(~/.tmux.conf)
tmuxはホームディレクトリの~/.tmux.confで動作をカスタマイズできます。
このファイルは最初から存在しないため、新規作成して以下の設定を追記していきます。
# プレフィックスキーをCtrl+bからCtrl+aに変更(screenユーザー向け) unbind C-b set -g prefix C-a bind C-a send-prefix # ウィンドウ番号を1始まりにする set -g base-index 1 # マウス操作を有効にする(スクロール・ペイン選択) set -g mouse on # ステータスバーの色をカスタマイズ(tmux 3.x 以降の推奨記法) set -g status-style 'bg=colour235,fg=colour136' # ペイン分割のキーバインドを直感的に変更 bind | split-window -h bind - split-window -v # 設定ファイルのリロード bind r source-file ~/.tmux.conf \; display "Reloaded!"
tmuxでは Ctrl+b → : を押すと画面下部にコマンド入力モードが開きます。ここにtmuxのコマンドを直接入力して実行できます。
設定変更後は、このコマンド入力モードで source-file ~/.tmux.conf と入力することで、tmuxを再起動せずに設定を反映できます。
また、コマンド入力モードで kill-server と入力すると、すべてのセッションを一括で終了してtmuxサーバーごと停止させることができます。
開発での活用
tmuxは開発作業でも非常に便利です。1つのウィンドウ内にエディタ・サーバー・ログ監視・テストランナーを並べることで、ツール間の切り替えコストをゼロに近づけることができます。
典型的な開発環境のレイアウト例です。
- 左ペイン:エディタ(画面の2/3を占有)
- 右上ペイン:開発サーバーの起動・ログ確認
- 右下ペイン:テストの常時実行
この構成により、コードを編集しながらリアルタイムでサーバーログとテスト結果を確認できます。
プラグイン(TPM)
tmuxはTPM(tmux Plugin Manager)を使ってプラグインで機能を拡張できます。
TPMは以下のコマンドでインストールできます。
# TPMをクローンしてインストールする git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
~/.tmux.conf の末尾に以下を追加してTPMを有効化します。
# TPMのプラグインリスト(使いたいプラグインをここに追加する) set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' # TPMの初期化(必ず最終行に記述する) # run コマンドより後に書かれた set -g @plugin は読み込まれないため、最終行でなければならない run '~/.tmux/plugins/tpm/tpm'
tmux起動後に Ctrl+b → I(大文字)を押すとプラグインがインストールされます。
特に便利な主なプラグインを紹介します。
| プラグイン名 | 説明 |
|---|---|
| tmux-sensible | 多くのユーザーが共通して行う基本設定をまとめたもの。まず最初に入れておきたい |
| tmux-resurrect | セッション・ウィンドウ・ペインの構成を保存・復元する。サーバー再起動後も開発環境をそのまま再現できる |
| tmux-continuum | tmux-resurrectと組み合わせて使い、セッション構成を自動で定期保存する |
| tmux-yank | コピーモードでコピーしたテキストをシステムクリップボードと連携させる |
| Catppuccin / Dracula | ステータスバーのテーマ。見た目を大幅にカスタマイズできる |
中でも tmux-resurrect は特に人気が高く、再起動後もVimのセッションを含めて開発環境をそのまま復元できるため、開発者に広く使われています。
tmuxのメンテナンス
tmuxは、Nicholas Marriott氏によって2007年にOpenBSDプロジェクトの一環として開発が始まりました。
現在はGitHub上でオープンソースプロジェクトとして活発にメンテナンスが続けられています。
- 2008年ごろにLinux環境へ移植され、GNU screenの有力な代替として普及しました。
- 現在のメンテナーはThomas Adam氏ら複数名が担っています。
- Slackware-currentには定期的に最新版が取り込まれています。
- 設定の柔軟性・プラグインエコシステム(TPM: tmux Plugin Manager)も充実しています。
tmuxのソースコードとドキュメントは、GitHub(tmux/tmux)にあります。
マニュアルページは man tmux で参照でき、非常に詳細な説明が記載されています。
海外エンジニアコミュニティでの普及状況
海外のエンジニアコミュニティでは、tmuxはほぼ当たり前のツールとして定着しています。
特にサーバー管理・インフラエンジニア(SRE、DevOps)、バックエンド開発者、オープンソース開発者の間で広く使われており、Vim/Neovimとtmuxを組み合わせる構成は定番中の定番です。
文化として根付いている証拠として、dotfilesと呼ばれる設定ファイルをGitHubで公開する文化があり、.tmux.conf はほぼ必ずセットで含まれています。
「What's in your dotfiles?」というトピックはHacker Newsで定期的に盛り上がりを見せており、YouTubeやブログには「My tmux setup」という解説記事・動画が無数に存在します。
書籍も出版されており、Brian P. Hogan著の tmux 3: Productive Mouse-Free Development(The Pragmatic Programmers)は、tmuxの定番書として広く読まれています。
日本ではまだ「知る人ぞ知るツール」という印象がありますが、海外ではサーバーを触るなら当然使うものという認識が定着しています。
SSHログイン時にtmuxを自動起動する
SSHで接続した後にtmuxを起動する——これを習慣化するだけで、作業効率は大きく変わります。
さらに一歩進めて、SSHログイン時に自動でtmuxを起動する設定にしておくと、起動し忘れるという事故がなくなります。
SSH経由のログイン時には ~/.bash_profile が読み込まれるため、通常はこちらに追加します(~/.bashrc を使っている場合はそちらに追加してください)。
# SSH接続時かつtmux未起動の場合に自動でアタッチまたは新規作成する
# $TMUX が空(tmux未起動)かつ $SSH_CONNECTION が存在する(SSH経由のログイン)場合に実行
if [ -z "$TMUX" ] && [ -n "$SSH_CONNECTION" ]; then
# "main" という名前のセッションが既存であればアタッチ、なければ新規作成する
tmux attach -t main 2>/dev/null || tmux new -s main
fi
この設定により、SSHでログインした瞬間に自動でtmuxセッションの中に入ります。
既存の "main" セッションがあればそこに再接続し、なければ新規作成します。
「tmuxを起動し忘れた状態で長時間作業して、切断で全部消えた」という事故を未然に防ぐことができます。
コピーモードの詳しい使い方
tmuxのコピーモードでは、ターミナルの過去の出力をスクロールして参照したり、テキストを選択・コピーしたりできます。
Ctrl+b → [ でコピーモードに入ると、デフォルトではEmacsスタイルのキーバインド(Ctrl+スペースで選択開始、Alt+wでコピーなど)が使われます。
Vimに慣れたユーザーには、~/.tmux.conf に以下を追加してviキーバインドに切り替えることをおすすめします。
# コピーモードのキーバインドをviスタイルに変更する set -g mode-keys vi
viキーバインドに変更すると、以下の操作が使えるようになります。
| キー | 操作 |
|---|---|
| Ctrl+b → [ | コピーモードに入る |
| h j k l | カーソル移動(vi と同じ) |
| Ctrl+u / Ctrl+d | 半ページ上下スクロール |
| / | 下方向に文字列検索 |
| ? | 上方向に文字列検索 |
| n / N | 次/前の検索結果へ移動 |
| v | 選択開始(ビジュアルモード) |
| y | 選択範囲をコピー(コピーモードは継続。終了するには q を押す) |
| Ctrl+b → ] | コピーしたテキストを貼り付け |
| q | コピーモードを終了 |
ログが大量に流れた後でも、コピーモードで遡って確認・コピーできるため、リモート作業での調査・デバッグに非常に役立ちます。
tmuxとVimの連携
tmuxとVimを組み合わせた開発環境は、海外エンジニアの間で特に人気の高い構成です。
通常、Vimのウィンドウ間移動は Ctrl+w → 矢印キー、tmuxのペイン間移動は Ctrl+b → 矢印キーと、それぞれ異なるキー操作が必要です。
vim-tmux-navigator プラグインを導入すると、Vimのウィンドウとtmuxのペインを Ctrl+h、Ctrl+j、Ctrl+k、Ctrl+l で統一的に移動できるようになります。
Vim側(~/.vimrc)に以下を追加します。vim-plugを使っている場合のインストール設定も併記します。
" vim-plug を使ったインストール " Plug の記述は call plug#begin() と call plug#end() の間に書く必要がある " すでにこのブロックがある場合は Plug の行だけを既存ブロック内に追加する call plug#begin() Plug 'christoomey/vim-tmux-navigator' call plug#end() " 以下のキーマップはプラグインが自動設定するため通常は不要 " デフォルト動作を上書きしたい場合のみ追加する " nnoremap <silent> <C-h> :TmuxNavigateLeft<CR> " nnoremap <silent> <C-j> :TmuxNavigateDown<CR> " nnoremap <silent> <C-k> :TmuxNavigateUp<CR> " nnoremap <silent> <C-l> :TmuxNavigateRight<CR>
TPMを使っている場合は、~/.tmux.conf のプラグインリストに1行追加するだけです。
# TPMを使う場合はこの1行を追加するだけでよい set -g @plugin 'christoomey/vim-tmux-navigator'
TPMを使わず手動でインストールした場合は、~/.tmux.conf に以下を追加します。
# TPMを使わず手動でインストールした場合の設定
# is_vim でアクティブペインがVimかどうかを判定する
is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\S+\/)?g?(view|n?vim?x?)(diff)?$'"
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
この設定により、Vimとtmuxのペインをまたいだ移動がプレフィックスキー不要で行えるようになり、開発効率が大きく向上します。
ペアプログラミングへの活用
tmuxの便利な機能の一つに、同じセッションに複数人が同時にアタッチできるというものがあります。
これを利用すると、画面共有ツールを使わずにリモートでのペアプログラミングが実現できます。
ただし、認証情報(パスワードやSSH鍵)を2人で共有するのはセキュリティ上問題があります。
それぞれが自分のUnixユーザーアカウントでSSHログインしたまま、同じtmuxセッションを共有する方法が安全です。
tmuxのソケットファイルのパーミッションを調整することで、別々のUnixユーザー間でセッションを共有できます。
# ホスト側(user1):共有グループを作成し、両ユーザーをメンバーにしておく # (事前準備:root で実行) groupadd tmuxpair usermod -aG tmuxpair user1 usermod -aG tmuxpair user2 # ホスト側(user1):共有用ソケットを指定してセッションを作成する # -S オプションで任意のパスにソケットファイルを作成する tmux -S /tmp/pair new -s pair # ソケットファイルのオーナーグループを共有グループに変更し、グループ書き込み権限を付与する # chmod 777 は避け、グループ権限のみ付与することでセキュリティを確保する chgrp tmuxpair /tmp/pair chmod 660 /tmp/pair # ゲスト側(user2):同じソケットを指定してアタッチする tmux -S /tmp/pair attach -t pair
この方法では、user1とuser2がそれぞれ自分のSSH鍵・パスワードでログインしたまま、同じtmuxセッションを共有できます。
両者がまったく同じ画面を見ながら、どちらからでも操作できます。
Tailscale経由でVPN接続した環境であれば、インターネット越しにも安全にペアプログラミングが行えます。
作業終了後は、ソケットファイルを削除してください。共有グループが不要になった場合は、必要に応じて削除します。
# 作業終了後にソケットファイルを削除する rm /tmp/pair # 共有グループが不要になった場合は削除する(root で実行) groupdel tmuxpair
Windows環境からの接続
WindowsからtmuxのセッションにSSH接続する場合、RLoginやWindows Terminal・WSL2から問題なく利用できます。
ただし、クリップボード連携については若干の注意が必要です。
- RLoginからの接続
-
RLoginはtmuxのマウス操作に対応しています。
set -g mouse onを設定した場合、ペインのスクロールやクリックによる選択が使えます。
テキストのコピーは、RLogin側でShiftキーを押しながらマウスでドラッグすることで、tmuxのコピーモードを介さずに直接クリップボードに取り込めます。 - WSL2からの接続
-
WSL2上のtmuxとWindowsのクリップボードを連携させるには、
tmux-yankプラグインとWSL用のクリップボードブリッジ(win32yank)を組み合わせるのが一般的です。
ウィンドウ・ペインの名前変更
複数のウィンドウを使い分けている場合、デフォルトでは実行中のコマンド名がウィンドウ名として表示されます。
用途がひと目でわかるように、名前を変更しておくと管理しやすくなります。
# Ctrl+b → , でウィンドウ名の変更プロンプトが画面下部に開く # 例:「ssh-server-a」「vim-project」「log-monitor」など用途を示す名前を入力してEnterを押す Ctrl+b , (rename-window) _ ← ここに新しい名前を入力する
ステータスバーのウィンドウ一覧が見やすくなり、Ctrl+b → w のウィンドウ一覧表示でも目的のウィンドウをすぐに見つけられます。
なお、デフォルトではコマンドを実行するたびにウィンドウ名が自動更新されます。名前を固定したい場合は ~/.tmux.conf に以下を追加します。
# ウィンドウ名の自動更新を無効にして、手動で付けた名前を維持する set -g allow-rename off
ペインのレイアウト自動整列
ペインを複数に分割した後、Ctrl+b → Space を押すたびにレイアウトがサイクルで切り替わります。
手動でペインサイズを調整しなくても、目的のレイアウトに素早く切り替えられます。
| レイアウト名 | 説明 |
|---|---|
| even-horizontal | 全ペインを横並びに均等配置 |
| even-vertical | 全ペインを縦並びに均等配置 |
| main-horizontal | 上部に大きなメインペイン、下部に小さなペインを横並び |
| main-vertical | 左側に大きなメインペイン、右側に小さなペインを縦並び |
| tiled | 全ペインをできるだけ均等なタイル状に配置 |
特定のレイアウトに直接切り替えたい場合は、コマンド入力モード(Ctrl+b → :)で以下のように指定します。
# コマンド入力モードで特定のレイアウトを直接指定する select-layout main-vertical
tmuxのログ保存
tmuxでは pipe-pane コマンドを使うことで、ペインの出力をリアルタイムでファイルに保存できます。
作業ログを残したい場合や、長時間のコマンド出力を後から確認したい場合に便利です。
# コマンド入力モード(Ctrl+b → :)でログ保存を開始する # 現在のペインの出力を ~/tmux.log に追記する pipe-pane -o 'cat >> ~/tmux.log' # ログ保存を停止する(引数なしで pipe-pane を実行する) pipe-pane
キーバインドに登録しておくと便利です。~/.tmux.conf に以下を追加します。
# Ctrl+b → P でログ保存をトグルする(P は大文字) # -o オプションは「すでにパイプが開いていれば閉じる」という意味でトグル動作を実現する bind P pipe-pane -o 'cat >> ~/tmux-#W.log' \; display 'ログ保存を切り替えました'
#W はtmuxの変数で、現在のウィンドウ名に展開されます。ウィンドウごとに別ファイルにログが保存されるので管理しやすくなります。
tmuxinatorによる環境の自動構築
tmuxinator は、プロジェクトごとのtmuxセッション構成(ウィンドウ数・ペイン分割・起動コマンド)をYAMLファイルで定義して、一発で再現できるツールです。
毎回手動でウィンドウを作成・分割・コマンド入力する手間がなくなります。
Rubyで書かれたツールのため、事前にRubyがインストールされている必要があります。Slackwareでは d/ カテゴリにRubyが収録されています。
# tmuxinatorのインストール(Ruby gemとして提供されている) gem install tmuxinator # プロジェクト設定ファイルを新規作成する(エディタが開く) tmuxinator new myproject
設定ファイル(~/.tmuxinator/myproject.yml)の例です。
# ~/.tmuxinator/myproject.yml
# tmuxinator start myproject で以下の構成が一発で起動する
name: myproject
root: ~/projects/myproject # 作業ディレクトリ
windows:
- editor: # ウィンドウ名
layout: main-vertical # レイアウト
panes:
- vim . # 左ペイン:Vimを起動
- make watch # 右上ペイン:ビルド監視
- tail -f /var/log/app.log # 右下ペイン:ログ監視
- shell:
panes:
- bash # 作業用シェルウィンドウ
設定ファイルを用意したら、以下のコマンドでセッションを起動・停止できます。
# 定義した構成を起動する tmuxinator start myproject # 起動中のセッションを停止する tmuxinator stop myproject
設定ファイルをGitリポジトリで管理しておけば、チームメンバー全員が同じ開発環境を即座に再現できます。
ステータスバーのカスタマイズ
tmuxのステータスバーは ~/.tmux.conf で細かくカスタマイズできます。
表示内容・色・更新間隔などを自由に設定できます。
# ステータスバーの更新間隔を5秒に設定する(デフォルトは15秒) set -g status-interval 5 # ステータスバー左側:セッション名を表示する set -g status-left '[#S] ' # ステータスバー右側:ホスト名・日時を表示する set -g status-right '#H %Y-%m-%d %H:%M' # ステータスバー右側の最大表示幅を広げる set -g status-right-length 60 # ウィンドウリストを中央寄せにする set -g status-justify centre # アクティブウィンドウのタイトルを強調表示する(tmux 3.x 以降の推奨記法) set -g window-status-current-style bold
#S はセッション名、#H はホスト名、%Y-%m-%d %H:%M は日時を表すtmuxの変数です。
複数のサーバーで作業している場合にホスト名を表示しておくと、どのサーバーで作業しているかが一目でわかり、誤操作を防ぐことができます。
まとめ
tmuxは、リモートサーバー作業の安全性と効率を大幅に向上させるツールです。
セッションの永続性によるSSH切断対策、ウィンドウとペインによる画面の多重化、そして柔軟な設定カスタマイズ——これらを組み合わせることで、Slackwareでの作業環境は一段と快適になります。
まずは tmux の一行から始めてみてください。