Linux や MacOS のターミナル(端末)の画面を分割/多重化して、1つのターミナル画面内で複数のターミナルプロセスを実行できるようにする、というツール tmux を使ってみました。ツール自体は結構以前からあったようですが、存在を知らなかった・・・
まずはインストール前の環境準備から。僕の環境は CentOS ですが、他の Linux ディストリビューションや MacOS などでも同様のはずです。
tmux はソースが公開されていて、ソースからビルドして導入します。というわけで公式サイトから tmux 自体のソースコードをダウンロードしておきます(今日時点の最新安定版は tmux-1.9a.tar.gz):
http://tmux.sourceforge.net/
最新安定版が 1.9a であれば、以下のコマンドでもダウンロードできます:
また、 tmux のビルドにはライブラリとして curses ライブラリが必要です。これは yum でサクッと導入します:
更に libevent 2.0 以上が必要です。一般的な環境に導入されているのは 1.x だと思うので、こちらも別途ソースからビルドして用意する必要があります(今日時点の最新安定版は libevent-2.0.21-stable.tar.gz):
これで tmux をビルドする準備が完了したので、改めてダウンロードしてきたソースファイルから tmux をビルドします:
tmux を実行する前に /etc/ld.so.conf.d/libevent.conf というファイルを新規に作成して libevent をインストールした場所を指定し、あらかじめロードしておく必要があります。
これで tmux のインストールは完了です。以下、簡単な使い方の紹介。
tmux を起動するには端末のプロンプト画面から 'tmux' と入力します:
あまり変わったように見えませんが、tmux が起動して、最初のセッションを作成し、その中で1つのウィンドウが作成されます:

この状態から tmux コマンドを駆使して複数のセッション/ウィンドウを管理します。まずはウィンドウを上下2つのペインに分割します。CTRL+b(CTRLキーを押しながら b)に続けて :(コロン)を入力し、画面下部に split-window と入力して Enter キーを押します:

ちなみに、CTRL+b に続けて : で tmux のコマンド入力モードに切り替わります。そこで画面下部に split-window という「縦にウィンドウを分割」という意味のコマンドを入力した結果、このような2画面に分割されたのでした。
同様にして、今度は画面を横に分割してみます。CTRL+b : に続けて split-window -h と入力します:

-h オプションをつけるとアクティブだったウィンドウが横に分割されました。
アクティブペイン内でコマンドを実行すると、その実行結果はペイン内だけに表示されます:

(右下のペインがアクティブな状態で ls コマンドを実行した結果)
CTRL+b o でペイン間の移動が可能で、アクティブペインを切り替えることができます:

(プロンプトが上のペインに移動 この状態でコマンドを実行すると上のペインで実行される)
アクティブペインは CTRL+b x で破棄できます:

(左下のペインをアクティブにしてから破棄コマンドを実行。左下のペインがなくなって上下2つになった)
なお CTRL+b ? でコマンドのヘルプが表示できます:

(上のペインをアクティブにしてヘルプを実行した様子。ショートカットに困った時のためにこのコマンドだけでも覚えておくべき)
クラウドサーバーを利用する場合、初期状態では SSH でしかログインできないし、環境によっては X Window を導入することもできないこともあります。そんな時に唯一使える端末を多重化して使えるのは便利です。
ま、現実問題として3つも4つも開くことはないけど、上下に2つ開いて互いの中身をコピペできるだけでもかなり使える。
まずはインストール前の環境準備から。僕の環境は CentOS ですが、他の Linux ディストリビューションや MacOS などでも同様のはずです。
tmux はソースが公開されていて、ソースからビルドして導入します。というわけで公式サイトから tmux 自体のソースコードをダウンロードしておきます(今日時点の最新安定版は tmux-1.9a.tar.gz):
http://tmux.sourceforge.net/
最新安定版が 1.9a であれば、以下のコマンドでもダウンロードできます:
# wget http://downloads.sourceforge.net/tmux/tmux-1.9a.tar.gz
また、 tmux のビルドにはライブラリとして curses ライブラリが必要です。これは yum でサクッと導入します:
# yum install ncurses-devel
更に libevent 2.0 以上が必要です。一般的な環境に導入されているのは 1.x だと思うので、こちらも別途ソースからビルドして用意する必要があります(今日時点の最新安定版は libevent-2.0.21-stable.tar.gz):
# wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz # tar xzvf libevent-2.0.21-stable.tar.gz # cd libevent-2.0.21-stable # ./configure # make # make install
これで tmux をビルドする準備が完了したので、改めてダウンロードしてきたソースファイルから tmux をビルドします:
# tar xzvf tmux-1.9a.tar.gz
# cd tmux-1.9a
# ./configure LDFLAGS=-L/usr/local/lib/ (上記でビルドした libevent-2.0 をフラグで指定)
# make
# make install
tmux を実行する前に /etc/ld.so.conf.d/libevent.conf というファイルを新規に作成して libevent をインストールした場所を指定し、あらかじめロードしておく必要があります。
# echo '/usr/local/lib' > /etc/ld.so.conf.d/libevent.conf # ldconfig
これで tmux のインストールは完了です。以下、簡単な使い方の紹介。
tmux を起動するには端末のプロンプト画面から 'tmux' と入力します:
# tmux
あまり変わったように見えませんが、tmux が起動して、最初のセッションを作成し、その中で1つのウィンドウが作成されます:

この状態から tmux コマンドを駆使して複数のセッション/ウィンドウを管理します。まずはウィンドウを上下2つのペインに分割します。CTRL+b(CTRLキーを押しながら b)に続けて :(コロン)を入力し、画面下部に split-window と入力して Enter キーを押します:

ちなみに、CTRL+b に続けて : で tmux のコマンド入力モードに切り替わります。そこで画面下部に split-window という「縦にウィンドウを分割」という意味のコマンドを入力した結果、このような2画面に分割されたのでした。
同様にして、今度は画面を横に分割してみます。CTRL+b : に続けて split-window -h と入力します:

-h オプションをつけるとアクティブだったウィンドウが横に分割されました。
アクティブペイン内でコマンドを実行すると、その実行結果はペイン内だけに表示されます:

(右下のペインがアクティブな状態で ls コマンドを実行した結果)
CTRL+b o でペイン間の移動が可能で、アクティブペインを切り替えることができます:

(プロンプトが上のペインに移動 この状態でコマンドを実行すると上のペインで実行される)
アクティブペインは CTRL+b x で破棄できます:

(左下のペインをアクティブにしてから破棄コマンドを実行。左下のペインがなくなって上下2つになった)
なお CTRL+b ? でコマンドのヘルプが表示できます:

(上のペインをアクティブにしてヘルプを実行した様子。ショートカットに困った時のためにこのコマンドだけでも覚えておくべき)
クラウドサーバーを利用する場合、初期状態では SSH でしかログインできないし、環境によっては X Window を導入することもできないこともあります。そんな時に唯一使える端末を多重化して使えるのは便利です。
ま、現実問題として3つも4つも開くことはないけど、上下に2つ開いて互いの中身をコピペできるだけでもかなり使える。
コメント
コメント一覧 (8)
tmux-2.6のinstallで躓いております。(centos6.8)お教え下さい
1,古いVersionを削除→sudo yum remove libevent libevent-devel libevent-headers
2.sudo yum install libevent2-devel
3.sudo yum install ncurses-devel
4.cd /usr/local/src
wget https://github.com/tmux/tmux/releases/download/2.6/tmux-
2.6.tar.gz
tar -xvf tmux-2.6.tar.gz
cd tmux-2.6
5../configure && make
sudo make install
以上をやりました。。⇨make: *** ターゲット `install' を make するルールがありません. 中止.
installできません
やり方をお教えください
よろしくお願いいあツィます
:
[root@concrete5 tmux-2.6]# make install
make[1]: ディレクトリ `/usr/local/src/tmux-2.6' に入ります
/bin/mkdir -p '/usr/local/bin'
/usr/bin/install -c tmux '/usr/local/bin'
make install-exec-hook
make[2]: ディレクトリ `/usr/local/src/tmux-2.6' に入ります
if test xmdoc = xmdoc; then \
sed -e "s|@SYSCONFDIR@|/etc|g" ./tmux.1 \
>./tmux.1.mdoc; \
else \
sed -e "s|@SYSCONFDIR@|/etc|g" ./tmux.1| \
gawk -f./mdoc2man.awk >./tmux.1.man; \
fi
/bin/mkdir -p /usr/local/share/man/man1
/usr/bin/install -c -m 644 ./tmux.1.mdoc \
/usr/local/share/man/man1/tmux.1
make[2]: ディレクトリ `/usr/local/src/tmux-2.6' から出ます
make[1]: `install-data-am' に対して行うべき事はありません.
make[1]: ディレクトリ `/usr/local/src/tmux-2.6' から出ます
[root@concrete5 tmux-2.6]# tmux -V
tmux 2.6
[root@concrete5 tmux-2.6]#
エラーメッセージからの判断ですが、make install のターゲットが見つからない、ということはその前の ./configure の所で失敗しているのではないかと想像しています。試しに ./configure だけを(&& make を付けずに)実行して、その結果が成功するかどうかを確認してみてはいかがでしょう? もしそこでエラーが発生するようであれば、そのエラーメッセージに原因のヒントが出力されるのではないかと思っています。
centos7.2にはインストールできましたがcentos6.8へのインストールはエラーばかりで出来ませんでした
Sudo Sudo yum install ncurses-devel
Wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
tar xzf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8-stable
./configure --prefix=/usr/local/libevent-2.1.8-stable
make
sudo make install
wget https://github.com/tmux/tmux/releases/download/2.6/tmux-2.6.tar.gz tar
xzf tmux-2.6.tar.gz
cdtmux-2.6
./configureCPPFLAGS="-I/usr/local/libevent-2.1.8-stable/include" LDFLAGS="-L/usr/local/libevent-2.1.8-stable/lib" --prefix=/usr/local/tmux-2.6
make
sudo make install
何が原因かは分かりませんが出来ないです
tmux 2.6 に必要なライブラリは tmux 1.9 とは違うので、このページに書かれた内容と同じ手順ではできないと思っています。
で、tmux 2.6 を導入するためには moriuchi 様が最初のコメントに書かれていた手順(1~5)が正しいようです。ただこれでできないとなると、更に必要なライブラリがある(僕の環境ではそれが入っている)のではないかと想像しています。それを調べるにはエラーメッセージを見る必要があって、上記のコメントを書いたのでした。
ちなみに、私が(上記で)導入に成功したのは CentOS 6.9 環境です。微妙に違いますが、それが原因かどうかまではわからないです。
Wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz を入れてからコンパイルされましたのでしょうか?
centos7系は直接できますので問題はないですが。。。。
私はDotinstallで勉強していますが動画内以外のサポートがないため困ったりしています。考えられるのはlibevent-2.1.8-stableが6.8との互換性かも??
もう少しがんばってみますね
> を入れてからコンパイルされましたのでしょうか?
私の手順は以下のとおりです:
(1) 最初にこのページに書かれた情報をそのまま使って tmux 1.9 をインストール
(2) 続いて moriuchi 様がこのページのコメントに書かれた 1 から 5 の手順をそのまま実行して tmux 2.6 をインストール
(1) が (2) に影響しているかどうかは調べてないのですが、おそらく (2) だけでも成功するのではないかと思っています。
<最初にこのページに書かれた情報をそのまま使って tmux 1.9 をインストール>install出来ませんでした
vagrant/centos6.8の環境へ入れることで何かの不具合がしているのかもしれません。もう少し頭を冷やして考えますね
本日、vagrantがグチャグチャになりタイムマシンで復元しました
そこからやりなおしました。
お陰さまで2.6最新版をインストールできました
[vagrant@localhost ~]$ tmux -V
tmux 2.6
長い時間お助けいただき有難うございます。感謝申しあげます