このガイドでは、GNU Screenとは何か、およびLinuxおよびUnixオペレーティングシステムでの例を使用してScreenコマンドの基本的な使用法を説明します。
GNU Screenとは何ですか?
GNU画面 ターミナルマルチプレクサ(ウィンドウマネージャ)です。名前が示すように、Screenは複数のインタラクティブシェル間で物理端末を多重化するため、各端末セッションで異なるタスクを実行できます。
すべてのスクリーンセッションは、プログラムを完全に独立して実行します。そのため、画面セッション内で実行されているプログラムまたはプロセスは、セッションが誤って閉じられたり切断されたりした場合でも実行を継続します。
たとえば、Ubuntuをアップグレードする SSH経由のサーバーの場合、何らかの理由でSSHセッションが終了した場合に備えて、Screenコマンドはアップグレードプロセスを実行し続けます。
GNU Screenを使用すると、複数の画面セッションを簡単に作成したり、異なるセッションを切り替えたり、セッション間でテキストをコピーしたり、いつでもセッションに接続したり、セッションから切り離したりできます。
GNU Screenは、すべてのLinux管理者が必要に応じて学習して使用する必要がある重要なコマンドラインツールの1つです。
Linuxの例でScreenコマンドを使用して複数のターミナルセッションを管理する方法を見てみましょう。
LinuxにGNUScreenをインストールする
GNU Screenは、ほとんどのLinuxオペレーティングシステムのデフォルトのリポジトリで利用できます。
Arch Linux、EndeavourOS、ManjaroLinuxにGNUScreenをインストールするには、次のコマンドを実行します。
$ sudo pacman -S screen
Debian、Ubuntu、Linux Mintの場合:
$ sudo apt-get install screen
Fedora、RHEL、CentOS。 AlmaLinux、Rocky Linux:
$ sudo dnf install screen
または、
$ sudo yum install screen
CentOS 8では、Screenは公式リポジトリでは利用できません。したがって、 [EPEL]
を有効にする必要があります リポジトリを作成してから、画面をインストールします。
$ sudo dnf install epel-release
$ sudo dnf install screen
SUSE / openSUSEの場合:
$ sudo zypper install screen
先に進んで、いくつかの画面コマンドの例を見てみましょう。
画面コマンドの例
画面内のすべてのコマンドへのデフォルトのプレフィックスショートカットはCtrl+a
です。 。 Screenを使用するときは、このショートカットを頻繁に使用する必要があります。したがって、このキーボードショートカットを覚えておいてください。
新しい画面セッションを作成する
新しいScreenセッションを作成し、それに接続してみましょう。これを行うには、ターミナルで次のコマンドを入力します。
screen
次に、このセッション内で任意のプログラムまたはプロセスを実行します。実行中のプロセスまたはプログラムは、このセッションから切断されている場合でも実行を継続します。
スクリーンセッションからの切り離し
スクリーンセッション内からデタッチするには、 Ctrl + aを押します。 およびd 。両方のキーの組み合わせを同時に押す必要はありません。最初にCtrl+ aを押します 次に、 dを押します 。セッションから切り離すと、次のような出力が表示されます。
[detached from 29149.pts-0.sk]
ここでは、 29149 画面ID およびpts-0.sk スクリーンセッションの名前です。画面IDまたはそれぞれのセッションの名前を使用して、画面セッションをアタッチ、デタッチ、および強制終了できます。
名前付きセッションを作成する
以下のように、デフォルトのユーザー名以外の任意のカスタム名でスクリーンセッションを作成することもできます。
screen -S ostechnix
上記のコマンドは、 "xxxxx.ostechnix"という名前の新しい画面セッションを作成します すぐに取り付けます。現在のセッションから切り離すには、 Ctrl + aを押します 続いてd 。
画面セッションに名前を付けると、どのプロセスがどのセッションで実行されているかを確認する場合に役立ちます。たとえば、セッション内でLAMPスタックをセットアップする場合、以下のように簡単に名前を付けることができます。
screen -S lampstack
デタッチセッションを作成する
セッションを作成したいが、自動的にアタッチしたくない場合があります。このような場合は、次のコマンドを実行して、 "senthil"という名前のデタッチセッションを作成します。 :
screen -S senthil -d -m
または、まもなく:
screen -dmS senthil
上記のコマンドは「senthil」と呼ばれるセッションを作成しますが、それに接続しません。
画面セッションの一覧表示
実行中のすべてのセッション(接続または切断)を一覧表示するには、次を実行します。
screen -ls
サンプル出力:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Detached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
ご覧のとおり、実行中のセッションは3つあり、すべてが切り離されています。
実行中の画面セッションがなかった場合は、次のような出力になります。
No Sockets found in /run/screen/S-sk.
スクリーンセッションに添付
いつでもセッションに参加したい場合、たとえば 29415.ostechnix 、単に実行します:
screen -r 29415.ostechnix
または、
screen -r ostechnix
または、画面IDを使用します:
screen -r 29415
前述のセッションに参加しているかどうかを確認するには、開いているセッションを一覧表示して確認します。
screen -ls
サンプル出力:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Attached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
上記の出力でわかるように、現在 29415.ostechnixに接続されています セッション。現在のセッションを終了するには、ctrl + a、dを押します。
ネストされたセッションを作成する
「screen」コマンドを実行すると、単一のセッションが作成されます。ただし、ネストされたセッション(セッション内のセッション)を作成することはできます。
まず、新しいセッションを作成するか、開いているセッションにアタッチします。 「nested」という名前の新しいセッションを作成します。
screen -S nested
次に、 Ctrl + aを押します およびc セッション内で別のセッションを作成します。これを繰り返すだけで、ネストされたScreenセッションをいくつでも作成できます。各セッションには番号が割り当てられます。番号は0から始まります 。
Ctrl + n を押すと、次のセッションに移動できます Ctrl + pを押して前に移動します 。
ネストされたセッションを管理するための重要なキーボードショートカットのリストは次のとおりです。
- Ctrl + a” -すべてのセッションを一覧表示します
- Ctrl + a 0 -セッション番号0に切り替えます
- Ctrl + a n -次のセッションに切り替えます
- Ctrl + a p -前のセッションに切り替えます
- Ctrl + a S -現在の領域を水平方向に2つの領域に分割します
- Ctrl + a l -現在の領域を垂直方向に2つの領域に分割します
- Ctrl + a Q -現在のセッションを除くすべてのセッションを閉じます
- Ctrl + a X -現在のセッションを閉じます
- Ctrl + a \ -すべてのセッションを強制終了し、画面を終了します
- Ctrl + a? -キーバインディングを表示します。これを終了するには、Enterキーを押します。
ロックセッション
画面には、画面セッションをロックするオプションがあります。これを行うには、 Ctrl + aを押します およびx 。 Linuxパスワードを入力して、画面をロックします。
Screen used by sk <sk> on ubuntuserver. Password:
ロギングセッション
Screenセッションにいるときは、すべてをログに記録することをお勧めします。これを行うには、 Ctrl + aを押すだけです。 およびH 。
または、 -L を使用して、新しいセッションを開始するときにログを有効にすることもできます。 パラメータ。
screen -L
今後、セッション内で行ったすべてのアクティビティは、 screenlog.xという名前のファイルに記録および保存されます。 $HOMEディレクトリにあります。ここでは、 x は数字です。
catを使用してログファイルの内容を表示できます コマンドまたは任意のテキストビューアアプリケーション。
推奨される読み物:
- ターミナルで行うすべてのことを記録する方法
画面セッションの自動開始
Screenセッションの自動開始は、SSH経由で長時間実行されるプロセスを実行するときに非常に役立ちます。何らかの理由でネットワーク接続が失われた場合、プロセスはリモートシステムのScreenセッション内で実行され続け、ネットワークがオンラインに戻ったときにプロセスに再接続できます。システム起動時に画面を自動起動する方法については、次のリンクを参照してください。
- ログイン時にLinuxで画面セッションを自動開始する方法
スクリーンセッションかどうかを確認する
お気づきかもしれませんが、通常のセッションと画面セッションはまったく同じように見えます。スクリーンセッションまたは通常のセッションのどちらにいても、明確な兆候は見られません。スクリーンセッションに参加しているかどうかを確認するには、以下のリンクに記載されている手順に従ってください。
- スクリーンセッションに参加しているかどうかを確認する方法
キルスクリーンセッション
セッションが不要になった場合は、それを強制終了します。 「senthil」という名前の切り離されたセッションを強制終了するには:
screen -r senthil -X quit
または、
screen -X -S senthil quit
または、
screen -X -S 29415 quit
開いているセッションがない場合は、次の出力が表示されます。
$ screen -ls No Sockets found in /run/screens/S-sk.
詳細については、manページを参照してください。
$ man screen
"Tmux"という名前の同様のコマンドラインユーティリティもあります これはGNUScreenと同じ仕事をします。詳細については、次のガイドを参照してください。
- 複数のターミナルセッションを管理するためのTmuxコマンドの例