screenのはじめ方

Linuxで使ってるscreenの基本的なはじめ方を書いてみた。

screenを使うメリット

screenを使うメリットは他にも一杯あるんでしょうが、私が主に使ってる理由は
以下の3つです。

  1. 複数シェルを立ち上げてSSHでも画面切り替えが出来る。
  2. ssh等の接続が切れても再度つなぎなおす事が出来る。
  3. コピペがSSH越しでもキーボードのみで可能。

インストール

yum使える奴(CentOSとかFedoraとか)
yum install screen
apt-getの方(DebianとかUbuntuとか)*1
apt-get install screen

yum apt-getともに rootユーザもしくはroot権限でやって下さい。

起動

screenコマンドを実行するだけです。
実行後、シェルが立ち上がり画面が切り替えられるようになります。

基本的なコマンド

Ctrl + a の後 c

新しい画面が作られます。

Ctrl + a の後 n

画面を順に切り替えます。

Ctrl + a の後 n

画面を逆順に切り替えます。

役に立つコマンド

Ctrl + a の後 Esc*2

画面をコピーモードに切り替えます。
上下左右に移動し、1回目のスペースで始点を選び、2回目のスペースで終点を選びます。

Ctrl + a の後 ]

コピーモードでコピーした内容を貼り付けます。

Ctrl + a の後 d

スクリーンをデタッチします。
デタッチ後、ssh等でログアウトしても、screen上で動いてたプログラムは終了しません。
再度接続する時は

 screen -r 

で接続できます。

 screen -r 

は、複数接続先がある場合は、その旨表示してくるので、

 screen -r [数字]

で接続先を指定してください。

screenrcの中身

最近の私のscreenrcの中身は以下の様な形です。

escape ^Tt
hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"
defhstatus "^En:^Et"
startup_message off
autodetach on
defscrollback 3000

escapeをtにしているので、上のショートカットの一覧が ctrl + aではなく、
ctrl + tに変わるので、もし導入される方は、気をつけて下さい。

.zshrcも弄ってステータスラインは

[23:46] 0 vi  1 ruby  2 mongrel_rails  3 vi  4 tail

の様に窓毎に最後に使ったアプリを表示する様に設定してます。
.zshrcの方も今度改めてさらします。

追記:
というわけでやり方を書いた。
screenのステータスバーを実行コマンドに置き換える。

*1:aptitudeでもOK

*2:[やCtrl + [でもOKです