screenとは
screenは仮想端末マネージャで、次のような特徴がある。
- 一つの端末で複数の仮想端末を切り替えながら使うことができる
- セッションを切断しても再開することができる
- 複数のユーザで端末を共有できる
設定
ホームディレクトリの.screenrcに設定を記述する。次の設定をしておくと便利。
- emacsの行頭への移動(
C-a
)と被るので、screenのコマンド用のエスケープキーをC-a
からC-t
に変更する - フロー制御を有効にするショートカットキー(
C-a s
)を押し間違えてしまうことが多いので、ショートカットキーを無効化する- フロー制御の無効にするショートカットキーは
C-a q
(ショートカットキーを無効化していれば使うことはないはず)
- フロー制御の無効にするショートカットキーは
screenの基本操作一覧
screenの起動方法
コマンド | 説明 |
---|---|
$ screen -S <セッション名> | 新しいセッションを作成して接続する。 |
$ screen -r <セッション名> | 切断したセッションに再接続する。 |
$ screen -x <セッション名> | 接続済みのセッションに接続する(マルチディスプレイモード)。 |
$ screen -ls | セッションの一覧を表示する。 |
screenの基本操作方法
screenを起動した後にscreenに対して操作するには、C-a
に続けてショートカットを入力します。それ以外はすべて通常の入力になる。
基本的にはショートカットを覚えておけば問題ない。vimに似ている、screenのコマンドを実行するショートカットもある。
ショートカット | コマンド | 説明 |
---|---|---|
C-a : | screenのコマンドを実行する(続けてコマンドを入力する)。 |
screenの停止方法
ショートカット | コマンド | 説明 |
---|---|---|
C-a d | detach | 現在のセッションを切断する(再接続できる)。 |
C-a C-\ | quit | 現在のセッションを終了する。 |
ウィンドウの作成と終了
ショートカット | コマンド | 説明 |
---|---|---|
C-a c | screen | 新しいウィンドウを作成する。 |
C-a k | kill | 現在のウィンドウを終了する。 |
ウィンドウの命名と一覧
ショートカット | コマンド | 説明 |
---|---|---|
C-a A | title | 現在のウィンドウに名前をつける。 |
C-a " | windowlist -b | ウィンドウの一覧を表示する。 |
ウィンドウの移動
ショートカット | コマンド | 説明 |
---|---|---|
C-a n | next | 次のウィンドウへ移動する。 |
C-a <space> | 同上。 | |
C-a p | prev | 前のウィンドウへ移動する。 |
C-a <backspace> | 同上。 | |
C-a <number> | number | 指定した番号のウィンドウへ移動する。 |
コピーモード
コピーだけでなく、流れてしまった大量のログを確認するときなどにも役立つ。コピーモード中は移動や検索、領域選択などのショートカットが使えるようになる。
ショートカット | コマンド | 説明 |
---|---|---|
C-a [ | copy | コピーモードを開始する。 |
C-a <escape> | 同上。 | |
C-a ] | paste | コピーモードを終了する。ペーストする。 |
C-b | 前方(上方向)に1画面(Backward)移動する。 | |
C-u | 前方(上方向)に半画面(Up)移動する。 | |
C-p | 前方(上方向)に1行(Prev)移動する。 | |
C-f | 後方(下方向)に1画面(Forward)移動する。 | |
C-d | 後方(下方向)に半画面(Down)移動する。 | |
C-n | 後方(下方向)に1行(Next)移動する。 | |
h | 左に1カーソル移動する(vim)。 | |
l | 右に1カーソル移動する(vim)。 | |
j | 上に1カーソル移動する(vim)。 | |
k | 下に1カーソル移動する(vim)。 | |
? | 前方(上方向)を検索する(vim)。 | |
/ | 後方(下方向)を検索する(vim)。 | |
<space> | コピーする領域の開始・終了位置を選択する。 |
1アカウントでセッション共有
セッションを共有できると遠隔ペアプロなども可能になるので便利。通称合体、フュージョンとも呼ばれるらしい。
新しいセッションを作成する。セッション名は何でもよいが、ここではsharedとする。
user$ screen -S shared
他の人に同じユーザでログインしてもらい、作成したセッションにマルチディスプレイモード(-x
)で接続してもらう。
user$ screen -x shared
他の人が別のユーザでログインしている場合には、ユーザ切り替え後に、scriptコマンドでuser権限の仮想端末を作成してから接続してもらう。
another_user$ sudo su - user
user$ script /dev/null
user$ screen -x shared
複数アカウントでセッション共有
screenのマルチユーザモードを使って複数アカウントでセッションを共有できる。しかし、screenコマンドにSUIDが設定されている(root権限で実行できる)環境でないとダメで、セキュリティ的にデフォルトでは使えない環境が多いのが現状。基本的には、1アカウントでセッションを共有したほうがよい。
詳しい方法はSharing A Screen Session With Another Userを参照。
ウィンドウの分割
垂直分割が可能なのはバージョン4.1から。screenの複数ウィンドウの切り替えとemacsのウィンドウ分割で用が足りているので、そのうち気が向いたらまとめる。