screen コマンドは、Linux で 1 つのシェルの中に複数のターミナル シェルを起動して配置するための非常に一般的なコマンドです。
screen はほとんどの場合、2 つの目的で使用されます。
複数のシェルを整理し、それらの間を簡単にナビゲートするために使用することもできますし、リモート サーバーで長時間のコマンドを実行するために使用することもできます。
実際、スクリーンは、突然のネットワーク停止の際に、遠隔地での作業を失わないようにするために起動されます。
このチュートリアルでは、Linux の screen コマンドがどのようなもので、どのようにして効果的に使用することができるのかを完全に概観します。
準備はいいですか?
目次
前提条件
新しいパッケージをインストールするためには、sudoユーザーである必要があります。
Debian で sudoers にユーザーを追加する必要がある場合は、そのためのチュートリアルがあります。
Red Hat ベースのディストリビューション用のものもあります。
準備ができたら、このコマンドを入力して sudo 権限があることを確認してください。
$ sudo -lUser user may run the following commands on localhost: (ALL) ALL
Linux での Screen のインストール
screen をインストールするには、次のいずれかのコマンドを実行する必要があります。
Debian ベースのディストリビューションでは、
$ sudo apt-get install screen
Red Hat ベースのディストリビューションでは、
$ sudo yum install -y screen
インストールが完了したら、現在の screen のバージョンを確認するために、このコマンドを実行します。
$ screen -vScreen version 4.06.02 (GNU) 23-Oct-17
Interacting with Screen on Linux
先ほど説明したように、screen は複数のシェルを並べ替えることができる対話型のシェルを起動するために使用します。
最初のスクリーンを起動するには、次のコマンドを入力するだけです。
見ての通り、以前のシェルとの違いはありません。 ヘッダーに
screen 0: :~
そこから先は、screenユーティリティーを介して、bashインタープリタが別のbashインタープリタの中で実行されることを意味します。
コマンドを実行するには、通常の操作と同じようにコマンドを入力するだけです。
getting help with screen
screen コマンドと対話する際には、screen セッション内でアクションを実行するために、キーボードでショートカットを実行する必要があります。
デフォルトでは、「Ctrl + A」キーストロークが screen と対話するように設計されています。
例として、「Ctrl + A」と入力した後に「?
最も人気のあるものは、おそらく以下のものでしょう:
- “Ctrl + A” then “d” : デタッチ モード。 このオプションを使用すると、デタッチ (元のシェルに戻ること) して、screen をバックグラウンドで動作させることができます。
- “Ctrl + A” then “x” : ロックスクリーン。 これは、他のユーザーが使用するスクリーンセッションを保護するために使用されます。
- “Ctrl + A” then “c” : screen command.
- “Ctrl + A” then “|” : 垂直分割。 デフォルトでは、このコマンドは現在のウィンドウを操作可能な 2 つの異なる領域に分割します。
- “Ctrl + A” then “S” : 水平方向に分割します。
- “Ctrl + A” then “n” : 異なるウィンドウ セッション間を移動するために使用されます。
- “Ctrl + A” then “Tab” : 入力カーソルを画面内の異なる領域のいずれかに移動するために使用されます。
ほとんどの場合、これらが screen で使用するコマンドです。
screen コマンドによる領域の分割
例として、Linux で screen コマンドを使用して次のようなレイアウトを作成してみます。
見ての通り、端末を縦と横に分割します。
1 つのウィンドウは、コマンド (たとえば、長時間実行するコマンド) を実行するために使用されます。
2 つ目のウィンドウは、トップ コマンドを使用してシステム パフォーマンスを監視するために使用されます。
最後に、別のウィンドウは nano エディターでファイルを編集するために使用されます。
スクリーン ウィンドウの作成
まず、次のコマンドを実行して、スクリーン セッションを作成します。
$ screen -S user-screen
-S オプションは、スクリーン環境のために名前付きのセッションを作成します。
複数の管理者が同じシステムで作業している場合、自分のセッションと他のセッションを区別するために、名前のついたセッションがあるとよいでしょう。
次に、3つのシェルセッションを操作するので、さらに2つのスクリーンが必要になります。
「create」コマンドを2回(「Ctrl + A」→「c」)実行します。
ヘッダーまたはターミナル シェルに「スクリーン 2」と表示されていることに注意してください。これは、セッションに対して 3 つのスクリーンが現在アクティブになっているためです。
画面を縦と横に分割する
次のステップでは、現在のウィンドウに異なる領域を作成します。
そのためには、まず、「Ctrl +A」を押した後に「|」を押して、現在の領域を垂直方向に分割します。
次に、「Ctrl +A」の後に「S」を押して、レイアウトを水平方向に分割します。
このようになります。
「Ctrl + A」から「Tab」を押して、2つ目のリージョンに移動します。
そこから、実行したいコマンドを実行します。
他のリージョンでコマンドを実行するには、これまでの手順を繰り返します。
最初に分割されたリージョンに入るときは、画面のウィンドウ間を移動しなければならないことを覚えておいてください。
素晴らしいですね。
スクリーンセッションからの脱却
スクリーンセッションから脱却するには、次のキーストロークを押すだけです。
$ Ctrl + A then d
あなたのスクリーン セッションはまだバックグラウンドで実行されています。
これは screen コマンドの主要な側面の 1 つです。
これはscreenコマンドの主要な側面の1つです。
これは、SSH経由でリモートホストに作成し、いくつかのアクションを実行し、後で戻ってくるために終了するために使用することができます。
スクリーン セッションがまだ実行されていることを確認するには、次のコマンドを実行します。 以下のコマンドを実行してください
$ pstree | grep -A 2 -E "screen-"
スクリーンセッションへの再接続
まず最初に。 以下のコマンドを実行することで、スクリーンウィンドウを一覧表示することができます。
$ screen -ls
スクリーンセッションに名前を付けた場合。 以下のコマンドを実行するだけです
$ screen -r <session_name>
上記の例では、自分のセッションに戻るために、このコマンドを実行する必要があります。
$ screen -r user-screen
ls コマンドの左端にあるスクリーン ID を使用してセッションに戻ることもできることに注意してください。
$ screen -r 3600
残念ながら、視覚的な変更はすべて失われ、再びウィンドウを分割する必要があります。
しかし、十分な練習を積めば、ショートカットについて簡単に学ぶことができるでしょう。
画面セッションのロック
時々、他のユーザーが自分の画面セッションを操作できないようにしたい場合があります。
画面をロックするには、「Ctrl + A」を押してから「x」を押します。
ロックを解除するには、画面セッションを所有しているユーザーのパスワードを入力する必要があります。
おわりに
今日のチュートリアルでは、Linux で screen コマンドを簡単に操作して、一般的なシェルの中にカスタム シェル環境を作成する方法を学びました。
リモート サーバーでは、セッションを終了しても作業を保存できるようにするために使用できることを学びました (たとえば、長時間実行中のコマンドが前面にある場合など)。
Linuxのシステム管理に興味がある方は、ウェブサイトに専用のセクションがありますので、そちらをご覧ください。