長時間実行されているプログラムを使用してリモートシステムに接続した後、接続が切断されるとどうなりますか?少なくとも、プログラムを再起動する必要があり、最悪の場合、データが破損する可能性があります。これを回避するために、一部のプログラムはシステムのウィンドウシェルで実行されます。この非常に基本的な例は、screen
です。 プログラム:
[pgervase@pgervase ~]$ ssh [email protected]
X11 forwarding request failed on channel 0
Last login: Wed Jan 27 12:10:06 2021 from xxxxxxxx.redhat.com
[root@rhel7dev ~]# screen
これにより、rhel7dev
で新しいシェルが開きます システム。 ping
を実行します そのセッション内から以下のコマンド:
[root@rhel7dev ~]# ping www.google.com
PING www.google.com (74.125.24.147) 56(84) bytes of data.
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=1 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=2 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=3 ttl=100 time=242 ms
次に、セッションから切り離してネットワークの停止をシミュレートする方法、または単に何かを一晩実行したままにする方法を示します。これを行うには、 Ctrlを押します 、そのキーを押したまま、 Aを押します 、次に Dを押します 。これでデフォルトのSSHプロンプトに戻り、screen -ls
を実行できるようになります。 切り離されたセッションを表示するには:
[root@rhel7dev ~]# screen -x
[detached from 25665.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There is a screen on:
25665.pts-0.rhel7dev (Detached)
1 Socket in /var/run/screen/S-root.
[root@rhel7dev ~]#
[次のこともお楽しみいただけます:Linuxコマンドラインでのパイプの操作]
スクリーンセッションを再開するには、screen -x
と入力します。 オプションとしてセッションが1つしかないためです。これで、ping
が実行される画面セッションに戻りました。 コマンドはまだ実行中です:
[root@rhel7dev ~]# ping www.google.com
PING www.google.com (74.125.24.147) 56(84) bytes of data.
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=1 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=2 ttl=100 time=242 ms
<snipped>
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=19 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=20 ttl=100 time=242 ms
^C
--- www.google.com ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 20278ms
rtt min/avg/max/mdev = 242.105/242.197/242.727/0.576 ms
[root@rhel7dev ~]#
一度に複数のスクリーンセッションを行うことができます:
[root@rhel7dev ~]# screen -ls
There is a screen on:
25665.pts-0.rhel7dev (Detached)
1 Socket in /var/run/screen/S-root.
[root@rhel7dev ~]# screen
[detached from 25693.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There are screens on:
25693.pts-0.rhel7dev (Detached)
25665.pts-0.rhel7dev (Detached)
2 Sockets in /var/run/screen/S-root.
[root@rhel7dev ~]# screen
[detached from 25706.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There are screens on:
25706.pts-0.rhel7dev (Detached)
25693.pts-0.rhel7dev (Detached)
25665.pts-0.rhel7dev (Detached)
3 Sockets in /var/run/screen/S-root.
[root@rhel7dev ~]#
これらの3つの画面セッションのそれぞれで、コマンドを実行したり、プロンプトでセッションを終了したりすることができます。
デフォルトのscreen -x
複数の画面が実行されているため、セッションを再開することはできません:
[root@rhel7dev ~]# screen -x
There are several suitable screens on:
25706.pts-0.rhel7dev (Detached)
25693.pts-0.rhel7dev (Detached)
25665.pts-0.rhel7dev (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
[root@rhel7dev ~]#
セッションの1つに接続するには、screen -x
を実行する必要があります 一意になるように十分な画面名を追加します:
[root@rhel7dev ~]# screen -x 257
[detached from 25706.pts-0.rhel7dev]
[root@rhel7dev ~]#
1つのセッションだけに制限したり、どの画面で何が実行されているかを覚えたりするのではなく、-S
を使用してセッションの名前を設定できます。 引数:
[root@rhel7dev ~]# screen -S "db upgrade"
[detached from 25778.db upgrade]
[root@rhel7dev ~]# screen -ls
There are screens on:
25778.db upgrade (Detached)
25706.pts-0.rhel7dev (Detached)
25693.pts-0.rhel7dev (Detached)
25665.pts-0.rhel7dev (Detached)
4 Sockets in /var/run/screen/S-root.
[root@rhel7dev ~]# screen -x "db upgrade"
[detached from 25778.db upgrade]
[root@rhel7dev ~]#
スクリーンセッションを終了するには、exit
と入力します。 またはCtrl+ Aを押します 次にD 。
これで、screen
を開始、停止、およびラベル付けする方法がわかりました。 セッションでは、もう少し詳しく見ていきましょう。画面セッションを垂直方向に半分に分割するには、 Ctrl + Aを押します。 次に| キー(Shift+バックスラッシュ )。この時点で、左側にプロンプトが表示された画面セッションがあります:

右側の画面に切り替えるには、 Ctrl + Aを押します 次にタブ 鍵。これでカーソルは正しいセッションになりましたが、プロンプトは表示されません。プロンプトを表示するには、 Ctrl + Aを押します 次にC 。これを複数回実行して、画面に複数の垂直分割を取得できます:

Ctrl + A + Tab を使用して、2つの画面ペインを切り替えることができるようになりました。 。
cat
するとどうなりますか コンソールが表示できるよりも大きいファイルを出力して、一部のコンテンツがスクロールして通過しますか?バッファ内をスクロールして戻るには、 Ctrl + Aを押します 次にEsc 。これで、カーソルキーを使用して画面内を移動したり、バッファに戻ったりできるようになります。
screen
には他のオプションがあります 、それらを表示するには、 Ctrlを押します 、次に A 、次に疑問符 :

[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]
詳細については、screen
のマニュアルページを参照してください。 。この記事は、screen
の使い方の簡単な紹介です。 切断されたリモートセッションがプロセスを誤って強制終了しないようにするためのコマンド。 screen
に似た別のプログラム tmux
です tmux
について読むことができます この記事で。