GNU screen
GNU screenとは
GNU screenは単一の端末上で複数の端末を操作するためのソフトウェアである。最近はVMWareやXenのように1つのOS上に仮想環境を構築し、複数のOSを同時に扱うのが流行っているが、
それの端末版みたいなものだと思ってくれればいい。
設定
screenの設定はホームディレクトリの.screenrcに記述する。以下、記述例。defencoding utf-8 escape ^z^z autodetatch on startup_message off bind ^k killまず、escape ^z^zだが、これはプレフィックスキーを設定している。
screenの操作に割り当てられた動作を実行する場合、この設定だと、まず最初にCtrl+zとタイプする。
その次にcを押すと新しいscreenが生成される。nだと次のscreenに移動し、pだと前のscreenに移動する。
起動
起動するには以下のコマンドを実行する。$ screenデフォルトだとEmacsみたいにメッセージが表示されるが、これはstartup_message offとすれば表示されない。
アタッチ
一度、抜けたscreenを再度起動するには以下のコマンドを実行する。$screen -x (screenのプロセス番号)(1ユーザの)screenのプロセスが1つしかない場合、プロセス番号は省略可。
screenのプロセス番号を確かめる方法は後述する。
デタッチ
現在実行しているscreenから抜けるにはCtrl+z dとタイプする。オートデタッチ
「autodetach on」と記述しておくと、ネットワークの障害などでサーバとの接続が遮断されても直前まで起動していたscreenは自動的にデタッチされ、もう一度アタッチすることで前の状態に戻すことができる。
ただし、サーバがダウンした場合はどうしようもない。
screenのプロセス一覧を表示
$ screen -ls There is a screen on: 151.ttys000.narazuya (Multi, attached) 1 Socket in /tmp/uscreens/S-bokkko.
この場合、151がプロセス番号である。
コピーモード
Ctrl+z [とタイプすると、screenはコピーモードになる。このモードになると、viなキーバインドで端末上のカーソルを自由に動かすことができる上に、スペースキーで範囲を指定してもう一度スペースキーを押した後、
Ctrl+z ]とタイプすると範囲指定した部分をコピー&ペーストできる。
screenに名前を付ける
screenには名前を付けることができる。デフォルトではシェルの名前が表示されているが、Ctrl+z Shift+aでscreenの名前を入力できるようになる。
screen一覧を常に表示する
端末上に立ち上げているscreen一覧を常に表示するには以下を設定ファイルに記述する。hardstatus alwayslastline " %`%-w%{=b bw}%n %t%{-}%+w"画面の下側に注目。
