tmux ♡ ssh な生活
ターミナルマルチプレクサ Advent Calendar 2011の17日目です。
16日目はglidenoteさんのtmuxの外観をカスタムして、運用と開発を加速させるでした。
さてみなさん、screenとtmuxどっちを使っていますか?
screenとtmuxどっちが好きですか?
僕はtmuxを使っていますが、screenが好きになりそうです。
11日目のyoshikawさんのlayoutに関しる記事をみて、tmuxのwindow-paneよりもlayoutの方が便利そうだなぁと思ってしまいました><
でもtmuxの見た目(?)の方が好きなのでやっぱりtmuxを使うことにします><
さて、前置きはこれぐらいにして本題へ。
ここからの話はtmux前提ですが、tmuxでできることは大概screenでもできるはずなので適宜おきかえていただけると。
(最近screen使ってないのでどうか分かりませんが…)
sshコマンドをキーバインドで呼びだす
みなさんは開発環境やら、本番環境やらにsshで入ってほげほげするあれげな人ばっかりだと思うのですが、大体sshするときって別window使ったり、paneを切ってやったりしますよね?
でもわざわざnew-windowやったり、split-paneしてからsshとかってダサくてキモいですよね。
なので、.tmux.confに以下のような設定をしてその辺一発でできちゃうようにしましょう。
# ssh unbind s bind-key s command-prompt "new-window -n ssh 'ssh -t %1'" bind-key ^s command-prompt "split-window -h 'ssh -t %1'" bind-key S command-prompt "split-window 'ssh -t %1'"
キーバインドは自分の好みに合わせてもらえればいいです。
tmuxだとwindowとpaneがあるのでどれがどのキーバインドだったか自分でも忘れてしまうというのが玉に瑕です…
っていうか、本番環境とかセキュリティ的にgateway経由じゃないと入れねーよJKという方は、
# gateway unbind g bind-key ^g command-prompt "split-window -h 'ssh -t gateway \"ssh -t %1\"'" bind-key G command-prompt "split-window 'ssh -t gateway \"ssh -t %1\"'" bind-key g command-prompt "new-window -n actual 'ssh -t gateway \"ssh -t %1\"'"
とかしておけばいいと思います。
クォートをエスケープしないといけないところがキモです。
僕の場合は本番はsshしてからtmux使うようにしているので使わないですけど><
起動sessionの設定を.tmux.confに書いて最初からssh
上で書いた設定のように、tmuxではtmuxコマンド実行時に任意のshellコマンド(クォートで括っているところ)を実行可能です。
それでそのプロセスが死んだらwindowやらpaneやらも閉じてくれます。
.tmux.confにはsessionの設定も書けるので以下のように書いておけば、
kill-serverした後でも同じようにsshしたり、pane作ったりしたものでも最初から使えちゃうというわけです。
tmux起動時のデフォルトの設定みたいな感じでしょうか。
# custom session new-session -s mobcov 'ssh -t develop' split-window -h 'ssh -t develop' split-window 'ssh -t develop' select-pane -t 0 rename-window develop new-window -n ssh 'ssh -t develop "ssh -t stage"' split-window -h 'ssh -t develop "ssh -t stage"' split-window 'ssh -t develop "ssh -t stage"' select-pane -t 0 new-window -n local split-window select-pane -t 0
これでtmux attatchすればいつでもいい感じにtmuxできますね!
まとめ
以上、超簡単で申し分けない感じですが、.tmux.confに書いているssh関連の設定を紹介してみました。
でも自分は上記の設定のおかげでかなり便利にtmuxを使えています。
(これと同じことがscreenでもできるかどうかはよく分からないので、今後のscreenハードコアな方に期待です><)
みなさんの日常業務に少しでもお役にたてたなら幸いです。