YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

screenを使う

動機

いままではセッションが切れて困るような長い作業はしていなかったけれど、最近は環境構築でインストーラが数時間のオーダーでかかることもあるので、screenを使うことにしました。これでセッション切れを心配することなく作業できます!

方法

Cygwin, Ubuntu, RHELでしか見てませんがパッケージでscreenをインストールするだけです。楽勝。apt-get最高。yum最高。設定ファイルである.screenrcは上記3つの環境どれを見ても/etc/screeenrcを$HOMEにコピーすればよし。以下は自分が.screenrcに追加した設定。追加次第追記します。

# エスケープ文字をCtrl-zに変更。(デフォルトはCtrl-a)
escape ^z^z
# 画面下部に開いているウィンドウの名前一覧を表示
caption always "%{= wk} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wb}%y/%m/%d(%D) %{=b wb}%c"

操作

起動
$ screen
アタッチ

lsオプションでスクリーンのプロセス番号を確認して、その番号をrオプションで指定すればアタッチできる。また-Xでマルチログインできる。

$ screen -ls
$ screen -r <プロセス番号>
$ screen -X <プロセス番号>
コマンドを用いての起動

screenコマンドの後に通常通りにのコマンドを打てばウィンドウを開くときにそのコマンドを実行した状態でウィンドウが開く。

$ screen ssh hoge@example.com
アタッチ中の操作
コマンド 操作
^Z c 新規ウィンドウの作成
^Z d デタッチ
^Z n 次のウィンドウに移動
^Z p 前のウィンドウに移動
^Z 数字 指定したインデックスのウィンドウに移動
^Z A 現在のウィンドウのタイトル変更
^Z l ウィンドウのリストを表示
^Z K 現在のウィンドウを閉じる
^Z [ コピーモード開始
^Z ] コピーモード終了
^Z ^\ すべてのウィンドウを殺してscreenを終了

コピーモードになれば通常のttyではスクリーンアウトしてしまうようなログもロールバックして見ることができる。操作はviと同様。