15ターミナルセッションを処理するためのLinuxScreenコマンド

画面またはGNU画面はターミナルマルチプレクサです。 これを使用すると、コンソールベースのアプリケーション、インタラクティブなコマンドシェル、コースベースのアプリケーションなどをいくつでも実行できます。誤ってプログラムを実行した後も、screenを使用してプログラムを実行し続けることができます。 close ターミナル、またはログアウトして後でどこにいても再開した後でも。

実用的 example sshセッションがあるリモートLinuxマシンでタスクを実行している場所です。 このsshセッションが終了し、作業できなくなるのを何度も目にしました。 セッションを再開するのに役立つ画面ユーティリティがあります。

画面はどのように機能しますか?

screenが呼び出されると、シェル(または指定されたコマンド)を含む単一のウィンドウが作成され、通常どおりにプログラムを使用できるように邪魔になりません。 その後、いつでも、他のプログラム(より多くのシェルを含む)を含む新しい(フルスクリーン)ウィンドウを作成したり、現在のウィンドウを強制終了したり、アクティブなウィンドウのリストを表示したり、ウィンドウ間でテキストをコピーしたり、ウィンドウを切り替えたりすることができます。 。

Screenは、それぞれがシェルまたは他のプログラムを含む1つ以上のウィンドウで構成されるセッションを管理します。 さらに、画面は端末ディスプレイを複数の領域に分割し、それぞれがウィンドウの内容を表示することができます。 すべてのウィンドウは、互いに完全に独立してプログラムを実行します。 プログラムは、ウィンドウが現在表示されていないときや、画面セッション全体がユーザーの端末から切り離されているときでも実行を継続します。 これは、不本意なsshタイムアウトセッションを防ぐために実用的です。

次に、Linuxでこのユーティリティを使用する方法を確認しましょう。

1)新しいウィンドウを呼び出す

screenコマンドがシステムにまだ存在しない場合は、以下のコマンドを使用してインストールできます。

Debianの場合

# apt-get install screen

Centosについて

# yum install screen

コマンドプロンプトでscreenと入力するだけで、画面を開始できます。 このscreenコマンドは、画面内に新しいウィンドウを開始します。

# screen

画面内で新しいウィンドウを開始したり、ウィンドウに名前を付けたりすることができます。 example アロフト。 その名前で識別されるセッションを作成します。 この名前は、後の段階で再接続するために使用できます。

# screen -S aloft

通常のCLI環境と同じように、すべての作業を実行できることに注意してください。

2)すべての画面プロセスを一覧表示します

画面内で新しいウィンドウを起動できるため、バックグラウンドで実行されている画面を含め、現在開いている画面を表示することができます。 既存のすべての画面セッションが一覧表示されます。

# screen -ls
There is a screen on:
 10437.aloft (Attached)
1 Socket in /var/run/screen/S-root.

3)画面のメインコマンド

いくつかのコマンドを使用して画面を操作することが可能です。 以下に、より便利な主なコマンドを示します。

  • Ctrl-a に続く c:新しいウィンドウを作成する
  • Ctrl-a に続く w:現在開いているすべてのウィンドウのリストを表示します
  • Ctrl-a に続く A:現在のウィンドウの名前を変更します。 で開いたウィンドウのリストを一覧表示すると、名前が表示されます Ctrl-a に続く w
  • Ctrl-a に続く n:次のウィンドウに移動
  • Ctrl-a に続く p:前のウィンドウに移動
  • Ctrl-a 続いてCtrl-a:最後に使用したウィンドウに戻ります。
  • Ctrl-a 0からXまでの数字が続きます:ウィンドウn°Xに移動します。
  • Ctrl-a に続く ":移動先のウィンドウを選択します。
  • Ctrl-a に続く k: close 現在のウィンドウ(kill)
  • Ctrl-a に続く S:現在のウィンドウを水平に分割します。 ウィンドウを切り替えるには、 Ctrl-a に続く Tab
  • Ctrl-a に続く |:現在のウィンドウを垂直に分割
  • Ctrl-a に続く d:画面セッションを停止せずに切り離す
  • Ctrl-a に続く r:切り離された画面セッションを再接続します
  • Ctrl-a に続く [: start the copy mode
  • Ctrl-a followed by ]:コピーしたテキストを貼り付けます

4)画面パラメータを表示

ヘルプのためにすべての画面のパラメータを一覧表示できます。 これを行うには、次のように入力します Ctrl-a キャラクターが続く ?。 すべてのコマンドのリストが表示されます。

5)デタッチセッション

screenコマンドの最大の利点は、画面セッションを切り離すことができることです。 オフィスの1台のコンピューターで画面セッションを開始し、ローカル端末からセッションを切り離して、家に帰り、オフィスのコンピューターにリモートでログインして、画面セッションを自宅のコンピューターの端末に再接続できます。 その間に、オフィスのコンピューター上のすべてのジョブが実行され続けました。 この機能は、ssh接続の切断中に突然発生するデータの損失を防ぐために使用されます。

私たちが話していることをよく理解するために、 example。 インストールプロセスを開始します。

次に、画面をデタッチします Ctrl-a に続く d。 以下のコマンドで確認できます。

# screen -ls
There is a screen on:
 12449.win (Detached)
1 Socket in /var/run/screen/S-root.

で画面を切り離すことが可能です screen -d コマンドの後に画面IDまたはその名前が続きます。 これは、現在のコンソールでプロセスが進行中の場合、セッションを切り離すために別のウィンドウまたはコンソールを開く必要があることを意味します。 まず、現在接続されている画面を一覧表示する必要があります。

# screen -ls
There is a screen on:
 13686.win200 (Attached)
1 Socket in /var/run/screen/S-root.

新しい端末で、以下のコマンドを入力します。

# screen -d 13686

またはあなたは名前を使うことができます

# screen -d win200

画面が切り離されたことを示す以下の出力が表示されます。

[remote detached from 13686.win200]

6)セッションを再接続します

画面を切り離した後、コマンドで再接続することができます。 通常、画面セッションはまだ機能しているため、すべてのプロセスが停止することはありません。 セッションを再接続する前に、上記のようにセッションをリストしてから、再接続するセッションを選択する必要があります。

# screen -r 13686

またはあなたが使用することができます

# screen -r win200

セッションを再接続した後、ウィンドウに完了したプロセスの終了が表示されていることがわかります。 これは、sshで作業し、自宅で再接続するセッションを切り離して、何も失うことなく作業プロセスを続行できることを意味します。

7)新しいインタラクティブシェルを作成します

やるべき仕事がいくつかあり、仕事を失いたくない場合は、新しいインタラクティブシェルを作成することができます。 1つのターミナルウィンドウでいくつかのインタラクティブシェル(0からXまでの番号)を簡単に開くことができます。 新しいセッションを開始すると、シェル0になります。

これを行うには、既存のウィンドウ内に新しいウィンドウを作成する必要があります。 Ctrl-a に続く c。 以下のようなものになります。

スクリーンショットの上部に画面3が表示されます。これは、3番目の画面にいることを示しています。 下部には3も表示されます

8)画面ウィンドウを切り替えます

複数の画面ウィンドウを開いたときに各ウィンドウを切り替えるには、を押します。 Control-a に続く space またはシェルの番号。 にとって example、シェル番号1に切り替えるには、を押します Control-a それから 1。 にとって example、最初の画面に移動します。

スクリーンショットの上部と下部は、最初の画面にいることを示しています。

9)分割ウィンドウ

作業のグローバルビューを表示するには、複数のウィンドウを使用する代わりに、ウィンドウを分割する必要があります。 Ctrl-a に続く S また | 画面を水平または垂直に分割します。 無制限に操作を繰り返すことができます。 別のウィンドウを移動するには、 Ctrl-a に続く Tab

カーソルが下部のウィンドウにある場合、新しいウィンドウを作成できます(Ctrl-a に続く c)または既存のウィンドウを呼び出す(Ctrl-a 数字が続きます)。

に close 分割されたウィンドウ、使用 Ctrl-a に続く X (大文字であることに注意してください)。

10)切断されたsshセッションに再接続します

初めてログインするときは、

  • screenを実行して、画面セッションを開始します。 別のシェルを取得し、その中でコマンドを実行します。
# screen -S remote_session
  • 終了したら、画面セッションをデタッチし、sshにログアウトします
[detached from 20995.remote_session]
  • 最初にすべてのスクリーンセッションを一覧表示できます
# screen -ls
There are screens on:
 20995.remote_session (Detached)
 14331.daby (Attached)
 14134.mom (Detached)
3 Sockets in /var/run/screen/S-root.
  • スクリーンセッションに再接続して、作業を続行します
# screen -d -r remote_ression

screenコマンドは、進行中の現在のプロセスを失うことなく、切断後に作業を続行するのに役立つため、sshセッションで最もよく使用されます。

11)画面ウィンドウを上にスクロールします

screenがリモートプログラムの管理を引き継ぐため、screenの実行中にターミナルエミュレータのスクロール機能を使用することはできません。 スクロールバックバッファにアクセスするには、Screenコマンドを使用する必要があります。

  • つかいます Ctrl-a に続く escape
  • を押します UpDown 矢印キーまたは PgUpPgDn 前の出力をスクロールするためのキー。

スクリーンショットで私のカーソルがどこにあるかがわかります。 各仮想端末には、独自のスクロールバックバッファがあります。

12)各スクリーンセッションの所有者を確認する

The screen -ls また screen -list コマンドは、rootの場合でも独自の画面セッションのみを表示します。 私の知る限り、それは画面自体と同じくらい良いものです。

どの画面セッションがどのユーザーによって開始されたかを確認したい場合は、の各ユーザーディレクトリを確認してください。 /var/run/screen/

# ls -lR /var/run/screen
/var/run/screen:
total 0
drwx------ 2 patrick patrick 60 Jun 17 20:47 S-patrick
drwx------ 2 root root 100 Jun 17 19:39 S-root

/var/run/screen/S-patrick:
total 0
srwx------ 1 patrick patrick 0 Jun 17 20:47 21941.pat_session

/var/run/screen/S-root:
total 0
srw------- 1 root root 0 Jun 9 16:45 14134.mom
srwx------ 1 root root 0 Jun 9 01:07 14331.daby
srwx------ 1 root root 0 Jun 17 20:46 20995.remote_session

13) 1つのアカウントで画面セッションを共有する

離れた場所から2人で同じアカウントにログインさせることができます。 彼らは簡単にスクリーンセッションを共有することができます(つまり、一方が他方をタイプすると、その逆も同様です)。 これをする:

  • 名前付き画面セッションを作成します。
# screen -d -m -S share_session
  • ターミナルウィンドウの画面セッションに接続します
# screen -x share_session
  • 他の人(同じアカウントにログインしている)もスクリーンセッションに接続してもらいます
# screen -x share_session

他の場所にもまったく同じ出力が表示されます。 自分の端末に表示されるものはすべて、他のユーザーの端末にも表示されます。

14)ロック画面セッション

通常のセッションユーザーをロックせずに画面セッションをロックすることが可能です。 それはあなたがあなたのコンピュータを離れることができて、誰も許可されていない操作に来ないことを確実にすることができることを意味します。 これを行うには、コマンドを使用します Ctrl-a に続く x (小文字であることに注意してください)。

Screen used by root <root> on centos-01.
Password:

15)スクリーンセッションを終了します

終了して画面セッションを終了したい場合は、コマンドを使用できます Ctrl-a に続く k。 確認を求められます。

exitコマンドを使用することもできます。 進行中のプロセスを保存する場合は、セッションを終了する前に画面セッションを切り離すことができます。

結論

画面ユーティリティは、ウィンドウのアクティビティまたは非アクティブを監視できます。 これは、大きなファイルをダウンロードしたり、コンパイルしたり、出力を待ったりする場合に最適です。 そのとき、必要に応じて、screenコマンドを使用してコンピューターからいくつかのプロセスを開始し、完了したらそれを切り離すことができます。