[サーバー構築] screen インストールと .screenrc の設定
便利コマンド screen をインストール。
screen の一番の利点は、たとえば作業中ローカル PC が落ちてリモート接続先のサーバーと通信が切れても、リタッチしてすぐに作業再開できることだと思う。
まずはインストール
# yum install screen
次に、screen インストール時に作成される screen 設定ファイル (~/.screenrc) を編集して使いやすいようにカスタマイズしていく。
まず、ぼくの .screenrc はこんなかんじ。
escape ^Ta vbell on autodetach on startup_message off shell -/bin/zsh bind k bind ^k bind . bind ^\ bind \\ bind ^h bind h bind 'K' kill bind 'I' login on bind 'O' login off bind '}' history bind 0 only bind 1 remove bindkey -k k1 select 1 termcapinfo xterm* 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~' bindkey -k k2 select 2 bindkey -k k3 select 3 bindkey -k k4 select 4 bindkey -k k5 select 5 bindkey -k k6 select 6 bindkey -k k7 select 7 bindkey -k k8 select 8 bindkey -k k9 select 9 bindkey -k k; select 10 bindkey -k F1 select 11 bindkey -k F2 select 12 bind ^] paste [.] caption always "%{= wk} %-w%{=bu dr} %n %t %{-}%+w%-22=%{= .k}[%Y-%m-%d %c:%s]"
上から順番に、いくつかピックアップして備忘。
escape ^Ta
これは screen のコマンドを実行する際にトリガーとなるキーの設定。
デフォルトは Ctrl-a となっているが、他の操作とかぶってしまうので Ctrl-t に変更。
bind 0 only
Ctrl-t でエスケープした後、0 を押せばスプリットしたリージョンを全て削除される設定
bind 1 remove
こちらはスプリットしたリージョンのうち、アクティブになっているものを削除する設定。
たくさんのウインドウを何分割もしていると整理したくなるので便利。
bindkey -k k1 select 1 termcapinfo xterm* 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~' bindkey -k k2 select 2 bindkey -k k3 select 3 bindkey -k k4 select 4 bindkey -k k5 select 5 bindkey -k k6 select 6 bindkey -k k7 select 7 bindkey -k k8 select 8 bindkey -k k9 select 9 bindkey -k k; select 10 bindkey -k F1 select 11 bindkey -k F2 select 12
これらは、ファンクションキーを押せばリージョンに指定したリージョンに移動する設定。
たとえば F5 を押せば 5 のリージョンに移動。
参考screenでファンクションキーを使う|とある技術者の日記
caption always "%{= wk} %-w%{=bu dr} %n %t %{-}%+w%-22=%{= .k}[%Y-%m-%d %c:%s]"
これはウインドウ下部に表示されるキャプションの設定。色々調べて自分なりにカスタマイズ。ちなみにそれぞれ下記のような意味。
caption (キャプション)
always (常時設定)
%{= wk} (w:背景white / k:文字black)
%-w (現在のウィンドウより前のウインドウ番号とウインドウタイトル)
%{=bu db} (b:bold / u:underline / d:背景default / b:文字blue)
%n (現在のウインドウ番号)
%t (現在のウインドウタイトル)
%{-} (直前のカラー設定を復元)
%+w (現在のウィンドウより後ろのウインドウ番号とウインドウタイトル)
%-22 (右端の22文字目から描画開始)
%{= .k} (.:背景変更なし / k:文字black)
%Y (年)
%m (月)
%d (日)
%c (現在時刻を24時表示)
%s (秒数)
起動するとこんな感じ。
%l でロードアベレージも表示できるっぽくてちょっと気になったけど、screen を起動したサーバーのロードが見れるだけであまり役立ちそうになかったので記述見送り。
ちなみに、下部キャプションのリージョン番号の横に、最後に実行したコマンドもしくはカレントディレクトリ名を表示するようにしています。これは .zshrc に追記して設定しました(使用しているシェルが zsh の場合)。その記述部分だけ抜き出すとこんな感じ。
参考メモの日々(2008-03-31)
case "${TERM}" in screen) preexec() { echo -ne "\ek<${1%% *}>\e\\" } #precmd() { chpwd() { echo -ne "\ek$(basename $(pwd))\e\\" } esac
おしまい。