概要#
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 セッションは自動的に終了します。