screenでマルチディスプレイモードを利用する

ターミナルマルチプレクサ Advent Calendar 2011というものに参加したので簡単なネタですがエントリーを書きたいと思います。

環境

  • さくらVPS 512M
  • CentOS release 5.7
  • Screen version 4.00.03

マルチディスプレイモード


screenのマルチディスプレイモードとは一言で言えばターミナル画面の共有ということです
ターミナル画面の共有がしたい時は人それぞれでしょうけど私は以下の項目の際に使えるのではないかなと思います

  • 新人研修などの時に新人の実行するコマンドなどを確認する
  • 障害対応中などの実行コマンドの確認を行う(確認してもらう人が横にいて実際に声をかけあって最終確認が必要になりますが)
  • コードのチェックなど。カーソルも共有できるのでカーソルを合わせて「ここがおかしい」など伝えるのが楽

とにかくコマンドやらコードやら不安要素がある時に利用することが多いのではないかなと思います。
前職で研修生に教える時は利用することもありました。本番環境では利用したことはないですね。

.screenrcの内容


今回は新人のeditnukiさんと先輩onukiさんという2人が登場します。
editnukiさんに~/.screenrcを作成させます

$ vi ~/.screen
multiuser on # マルチディスプレイモードのon/off
acladd onuki # マルチディスプレイモードで自分が作成するセッションに接続できるユーザ名の指定

その間に先輩のonukiさんはroot権限で下記作業を行います

screenにsuidを付けます ※suidとは

 # chown u+s /usr/bin/screen 
/var/run/screenに実行権限を与えます
 # chmod 755 /var/run/screen 
※実行権限を与えないと怒られます
 $ screen -S editnuki/session
Directory '/var/run/screen' must have mode 755.

マルチディスプレイモード実行方法


まず新人editnukiさんがscreenを実行します

 $ screen -S session

これでsessionというセッション名のscreenのを起動します。

先輩のonukiさんはこのセッションにアクセスします

 $ screen -x editnuki/session 

screen -x セッションを保持しているユーザ名/セッション名
で接続を行います。
マルチディスプレイモードを実行した場合は下図の様になります。

左側が先輩のonukiさんのターミナル画面で右側が後輩editnukiさんのターミナル画面になります。
セッションを作成した側の画面サイズも保持されるのでonukiさんの方ではeditnukiさんの画面サイズ分だけ利用されます。
ユーザもeditnukiさんになるので作業にroot権限が必要になったりする場合は要注意です。

次回はyoshikawさんの開発版GNU screenのlayoutを使ってみようについてです