概要#
screen は強力なターミナルマルチプレクサであり、1 つの物理的な端末で複数のフルスクリーンペイン(仮想端末)を実行することができます。これは特に、長時間実行するプロセスが必要な場合や、リモートセッションでセッションを切断しないようにする必要がある場合に非常に便利なツールです。screen を使用すると、起動したアプリケーションをバックグラウンドで実行できます。
インストール#
Linux でのインストール
sudo apt install screen
Mac でのインストール
brew install screen
パラメータ#
オプション | 説明 |
---|---|
-4 | ホスト名を IPv4 アドレスにのみ解決します。 |
-6 | ホスト名を IPv6 アドレスにのみ解決します。 |
-A -[r|R] | すべてのウィンドウを新しい表示の幅と高さに合わせます。 |
-c file | '.screenrc' ではなく、設定ファイルを読み込みます。 |
-d (-r) | 実行中の screen をデタッチします(ここで再接続します)。 |
-dmS name | デーモンモードで起動します:デタッチモードで screen セッションを実行します。 |
-D (-r) | リモート接続をデタッチしてログアウトします(ここで再接続します)。 |
-D -RR | screen セッションを取得するために必要な操作を実行します。 |
-f | フロー制御をオンにします。-fn = オフ、-fa = 自動。 |
-h lines | スクロールバッファのサイズを設定します。 |
-i | フロー制御がオンの場合、出力を早めに中断します。 |
-l | ログインモードをオンにします(/var/run/utmp を更新)、-ln = オフ。 |
-ls [match] | 何もせずに、SockDir をリストアップします [可能な一致で]。 |
-L | 出力ログをオンにします。 |
-Logfile file | ログファイル名を設定します。 |
-m | $STY 変数を無視して新しい screen セッションを作成します。 |
-O | vt100 エミュレーションではなく、最適な出力を選択します。 |
-p window | 存在する場合、指定した名前のウィンドウを事前選択します。 |
-q | 静かに起動します。失敗した場合は終了し、非ゼロのリターンコードを返します。 |
-r [session] | デタッチされた screen プロセスに再接続します。 |
-R | 可能な場合は再接続し、それ以外の場合は新しいセッションを開始します。 |
-s shell | 実行するシェル($SHELL ではなく)を指定します。 |
-S sockname | このセッションを<pid>.sockname ではなく<pid>.<tty>.<host> として名前付けます。 |
-t title | タイトル(ウィンドウの名前)を設定します。 |
-U | screen に UTF-8 エンコーディングを使用するように指示します。 |
-x | デタッチされていない screen にアタッチします(マルチディスプレイモード)。 |
-X | 指定したセッションで<cmd> を screen コマンドとして実行します。 |
例#
- 新しい screen セッションを起動する
screen
- screen セッションに名前を付けて、セッションを管理しやすくする
screen -S <name>
- 実行中の screen セッションをデタッチし、バックグラウンドに移動する(セッション内で操作)
ctrl + a; d
- 実行中の screen セッションをリストアップする
screen -ls
- 指定した PID で実行中の screen に再接続する
screen -r <pid>
- 指定した名前で実行中の screen に再接続する
screen -r <name>
- screen セッションをロックする
ctrl + a; x
セッションを開くためにパスワードを入力する必要があります
- デタッチされた screen セッションを終了する
screen -S <name-or-pid> -X kill
- デタッチされた screen セッションを終了する
screen -S <name-or-pid> -X quit
一般的なショートカットキー#
- 現在のセッションで新しいウィンドウを作成する
ctrl + a;c
ウィンドウの切り替え
次のウィンドウに切り替える:
ctrl-a;n
前のウィンドウに切り替える:
ctrl-a;p
すべてのウィンドウを一覧表示する:
ctrl-a;w
ウィンドウを閉じる
現在のウィンドウを閉じる:
Ctrl-a;k
ウィンドウの名前を変更する
現在のウィンドウの名前を変更する:
Ctrl-a;A
画面を分割する
水平に分割する:
Ctrl-a;S
垂直に分割する(新しい screen バージョンでサポートされています):
Ctrl-a;|
次の分割に切り替える:
Ctrl-a;TAB
現在の分割を閉じる:
Ctrl-a;X
便利な例#
リモートセッション#
ssh を使用してリモートサーバーに接続し、セッションを切断しないようにするには、screen を使用します:
ssh user@server_ip
screen -S remotesession
screen セッションで操作を行い、ネットワーク接続が切断されてもセッションは実行されたままです。再接続するには:
ssh user@server_ip
screen -r remotesession
マルチタスク処理#
同じ screen セッションで複数のタスクを処理する:screen -S multitask
最初のウィンドウでタスクを実行する、例えばシステムログの監視:tail -f /var/log/syslog
新しいウィンドウを作成する:Ctrl-a;c
新しいウィンドウで他のタスクを実行する、例えばファイルの編集:vim /etc/hosts
Ctrl-a;n
とCtrl-a;p
を使用して 2 つのウィンドウ間を切り替えます。
screen セッションを終了する#
すべてのウィンドウをexit
またはCtrl-d
で閉じると、screen セッションは自動的に終了します。