ナクナイ

勉強用の備忘録

[サーバー構築] 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 (秒数)


起動するとこんな感じ。
f:id:tamulapin:20141225163855p:plain

%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

おしまい。