tmuxが使いやすい。screenと使い方はほぼ同じだけど、CentOSだとうまく縦分割できなかったのでこっちを入れました。
メリットは下記サイトにうまくまとまっている。個人的に一番嬉しいのはメモリ消費量1/5ということ。TOPコマンドで見てみたけどRESが10m前後。まぁこんなものなのかな。
インストール
環境はCentOS 5.5 32 bitです。tmuxのページから辿ってソースを持ってきましょう。
$ wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.3/tmux-1.3.tar.gz?use_mir ror=jaist&ts=1280927938&r=http://tmux.sourceforge.net/ $ tar zxvf tmux-1.3.tar.gz $ cd tmux-1.3 $ ./configure $ make && sudo make install
これでインストールは完了!screenをソースから入れようとするとCentOSだと色々エラーが出て面倒なので諦めました。Mac、Ubuntuなんかは問題なさそうです。
インストール時のエラー
$ make cc -DBUILD="\"1.3\"" -std=c99 -D_GNU_SOURCE -D_POSIX_SOURCE -iquote. -c -o attributes.o attributes.c In file included from attributes.c:23: tmux.h:30:19: error: event.h: No such file or directory In file included from attributes.c:23: tmux.h:831: error: field ‘name_timer’ has incomplete type tmux.h:1025: error: field ‘key_timer’ has incomplete type tmux.h:1086: error: field ‘event’ has incomplete type tmux.h:1102: error: field ‘repeat_timer’ has incomplete type tmux.h:1122: error: field ‘identify_timer’ has incomplete type tmux.h:1125: error: field ‘message_timer’ has incomplete type make: *** [attributes.o] Error 1
tmux-1.3/NOTESを見るとtmux 1.2からlibeventに依存していることが分かるのでyumで入れる。
$ sudo yum install libevent-devel <=libeventも依存関係から入る。はず。
で、再度makeしてみると
$ make cc -DBUILD="\"1.3\"" -std=c99 -D_GNU_SOURCE -D_POSIX_SOURCE -iquote. -c -o tty-term.o tty-term.c tty-term.c:24:20: error: curses.h: No such file or directory tty-term.c:29:18: error: term.h: No such file or directory tty-term.c: In function ‘tty_term_find’: tty-term.c:324: warning: implicit declaration of function ‘setupterm’ tty-term.c:324: error: ‘OK’ undeclared (first use in this function) tty-term.c:324: error: (Each undeclared identifier is reported only once tty-term.c:324: error: for each function it appears in.) tty-term.c:354: warning: implicit declaration of function ‘tigetstr’ tty-term.c:354: warning: assignment makes pointer from integer without a cast tty-term.c:361: warning: implicit declaration of function ‘tigetnum’ tty-term.c:368: warning: implicit declaration of function ‘tigetflag’ tty-term.c:380: warning: implicit declaration of function ‘del_curterm’ tty-term.c:380: error: ‘cur_term’ undeclared (first use in this function) tty-term.c: In function ‘tty_term_string1’: tty-term.c:463: warning: implicit declaration of function ‘tparm’ tty-term.c:463: warning: return makes pointer from integer without a cast tty-term.c: In function ‘tty_term_string2’: tty-term.c:469: warning: return makes pointer from integer without a cast make: *** [tty-term.o] Error 1
cursesって何やねんと調べてみるとどうやらテキストインタフェースのためのAPIツールのようなものらしい。Wikipedia ncurses
ということでncursesをインストール。
$ sudo yum install ncurses-devel <= ncurses自体も依存関係から入る。はず。
これでmakeが通るはず。
設定 ~/.tmux.conf
これで見やすさ&使いやすさを考えてtmux.confを作成します。最初の3行でscreenでいうescapeのキーを設定してます。デフォのC-bは使いにくいんで自分はC-jにしました。
カラーの設定もとりあえず見やすくなったかと思います。
$ less ~/.tmux.conf unbind-key C-b set-option -g prefix C-j bint C-j send-prefix set-window-option -g utf8 on set-window-option -g mode-keys vi set-window-option -g automatic-rename off #color set-option -g status-bg blue set-option -g status-fg yellow set-option -g history-limit 100000
よく使うコマンド
たくさんコマンドあるんですが、自分が良く使うコマンドを列挙します。
プレフィックスを変えてややこしいと思うので、プレフィックス(エスケープ)をEと表記しますね。
E-iとかかれていたら、Ctrl+j-iと思ってください。
E-c
新しいウインドウを生成します。下のステータスバーに新しいウインドウbashが生成され、アスタリスク(*)がついてアクティブになってると思います。
E-数字、E-p、E-n
ウインドウができたらウインドウ間を移動するときがあると思います。数字を押せばそのウインドウに直接移動し、p、nはpreview、nextの略(だと思う)なので1個前、後に移動します。
E-,
カンマ(,)を使うことでウインドウの名前をつけることができます。ウインドウが多くなると管理が大変なので便利です。
E-"、E-%
"はウインドウを横分割、%はウインドウを縦分割します。
E-Esc+Up、E-Esc+Down、E-Esc+Left、E-Esc+Right
ウインドウサイズを調整します。ウインドウ分割は均等に行われるので、見るものによって調整するときなんか便利です。
E-o、E-Up, Down, Left, Right
アクティブなウインドウを切り替えます。使用頻度は高いです。
E-x
アクティブなウインドウを閉じます。
E-t
時間を表示します。何となくオサレです(笑)
E-d
ウインドウをデタッチします。これは非常に便利で、自分用にカスタマイズしたウインドウなどをそのままの形で残せます。リモート上のPCでデタッチをすればローカルのターミナルを落としても、リモートマシン上でtmuxが動き続けるので、翌朝またPCを立ち上げて、アタッチすることにより簡単に作業の続きが行えます。
tmuxを立ち上げるときに tmux ls でtmuxウインドウの存在を確認し、tmux a でアタッチし繋げることができます。
文字の説明だけど分かりにくいと思うので実際にデタッチ、アタッチをしてみると良いです。
この流れは下記サイトが分かりやすいです。tmuxではなくscreenですがコマンドキーが違うだけでやっている内容は一緒です。
GNU screen で仮想端末。処理をほったらかしにして切断、さあ帰ろう
E-?
コマンドリストを表示します。今回説明したもの以外にも数多くあるのでいろいろ探ってみると良いと思います。
以上です。