今まで作業をやりっぱなしにさせたい時に、screen上で動作させておいてsshで接続をぶっちぎって作業を継続させておいたりしたのですが、その他にも普通に2つの画面を切り替えるくらいしか使ってなかった。片方はnohupでできるけどいつもコマンド忘れてscreenやっちゃうんだよね。viで編集して抜けずにシェルで実行等を別画面でやる、とかごく地味に使ってきた。screen -rで継続させたりして、まぁ便利かなと思ってたまに使っていた。コマンドラインでちょっと玄人的に(他人から見ると素人的でしょうが)扱えて便利さも増すというところが気に入っていた。
なんで今更慣れた環境を変えようと思ったのかですが、tmuxが日経Linuxで紹介していたからです。
screenの方が一般的だと思っていたのですが、なんかtmuxをシス管系女子のまとめで取り上げていたので使ってみる気になった。PDFでまとまっていてよい。使ったらキーバインドが違うだけで、何が違うんだろうと気になってググってみました。新しく作るんだったらGNUに喧嘩売るだけの実力はあるんだろう、と。
相違点とtmuxの利点を主にザラッと見てみる。
http://blog.catatsuy.org/a/243
>ネットワーク切っても別のクライアントからでも同じ状態から再開できる。
>ネットワーク切ってもプロセス止まらない。nohup要らず。
>基本同じことだけどもこれがとても素晴しい。
>ということでちゃんとこれができるか確認すると、あっさりできた。
まぁ基本は同じってことだよね。
>screenの場合は設定が必要だったdetach操作せずに
>ネットワークを切ったときに自動的にデタッチする(autodetach on)もデフォルトで動作
>(tmuxだとdetach-on-destroy)
あーattachしたまま操作は流石にできないか。でも、screenだともう一回入れない場合も多いので、tmuxだと楽に出来ればいいな。
http://d.hatena.ne.jp/tmatsuu/20090709/1247150771
>tmuxへ移行する理由(メリット)
>標準設定のままでもそれなりに使えるステータスバー
要るか?
>各ショートカットがコマンドベース(コマンドで操作ができる)
>標準で縦分割機能搭載
これは一番使えそう。screenだとパッチとか当てなきゃダメみたいだし。というか、画面分割できるのを最近知った。Ctrl+a, Ctrl+aで切り替えしかしてないし。
>GNU screenがたまに固まる問題(が発生するのは私だけ?)が発生しないかも
あ~あるある。PuTTYが悪いのかと思っていた。
>ビュー専用のスクロールモード
>柔軟なペイン制御
>terminfo的にscreen互換
正直、あんまり使わない。というか、いろいろ覚えなきゃならないので使えないし、わからない。
>コピー&ペースト用のバッファを複数保持できる
それはクライアント側でコピペするからいいや。マウス必要になるけど、Webで調べてコピペができるようになっていればいい。Macのターミナルだと⌘+vでペースト出来るんだよね。PuTTYだとクリックするだけでいいんだっけ?
>メモリ消費量が少ない(GNU screenの約1/5)
それはいいかも。
>一部機能でマウスが使用できる(mode-mouse, mouse-select-pane)
それってどういう状況なんだろう。sshクライアント側の対応もいりそうなんだけど。Linux上のコンソールで出来るんだったら、私の使い方では意味ないね。MacかWindowsでssh接続しているから。
>活発に開発中
それは何より。というか、不具合あっても開発止まっちゃってるとどうしようもないんだよね。自分でパッチ当てるのも面倒な話だし。
tmuxへ移行する上での注意点(デメリット)
GNU screenにはないペインの概念がややこしい(複数同時表示できるのはペインのみ、ウィンドウは1つのtmux上で同時に表示できない)
あーそんなに増やさないよね。ペインとウィンドウの違いさえわかってない。あれ~切り替えるとスプリットが消える、みたいな。ペインって何?
マルチバイト文字がたまに表示上消える(Ctrl+Lで復活)
バッファのペースト時にマルチバイト文字が化けることがある
GNU screenにあるシリアル接続機能はない
Windowsからtelnet/ssh経由でtmuxを操作する場合、画面が崩れる場合がある
まだ発展途上
ん~、screenに劣るのは厳しいな。まぁシリアル接続は今時必要ないか。
正直、キーバインドを覚えなおしてメリットが得られるかどうか微妙なところ。でも、Ubuntuではデフォルトで入っているので、使いたいと思った時はAPTで入れなくても使えるし、CentOSみたいに普通にリポジトリから入れて動かないなんてヘボなことはないし。
とりあえず縦分割を使ってみているけど悪くない。まぁそもそもviを使うとかよりも、WinSCPでファイル開いて保存する時にアップしてもらうほうがお気楽だし、viは/etc とかのsudoが必要なファイルくらいかなぁ。Macでもフリーソフトで同様なことは出来るんだよね。だから、一向に上達しないんだけど、あんまり不便はしてない。とりあえずESCキーを押してニュートラルにして、iで挿入モードで、Aで行末に飛んで、:wで書き込んで、:qで終わり、ぐらい覚えておけばなんとかなる。/で検索して、あとヤンクできれば実質作業時間的に大丈夫。
emacsとか使っている人は、正直色んな意味でスゴいと思う。でも、多くの環境を渡り歩かないといけないものとしては、emacsのカスタマイズとかやってるヒマがない。使うにしても大体のツールは設定ファイルをいじるなんてまずない。あのツールが入ってないから入れるか、というレベル。正直、外のネットワークにつながってないマシンでツール入れるなんて普通にできないしね。あるものをデフォルトで頂く、が常識になってた私は非常識なんでしょうか。基本、動くコードを残業しないで作れればいい人だったので、あんまり凝ったことしたくないんですよね。馬鹿らしくて。無駄に知識がないとできない職業ってのも閉鎖的でどうかと思うし。エキスパートという人種は大抵つぶしが利かないので、仕事がはまらないと使いにくいのですよ。