まずデタッチの例をお見せしましょう。
デタッチ
^Z ^Dまたは^Z dとキーインします。
すると、一番最初にscreenを起動したシェルに戻ります。
いわば、screenプロセスをそのままバックグランド処理に移行したような状態です。
デタッチしたscreenプロセスを確認するコマンドがあります。
screenのセッションリストの表示
シェルからscreen -lsと入力する。
Detachedとなっているプロセスは、バックグランドで動作しています。
Attachedとなっているプロセスは、ひとつ以上の端末にバインドされていることを示します。
デタッチされたscreenセッションが管理している仮想画面は、バックグランドで動作し続けています。 もちろん仮想画面の端末に所属するプロセスにSIGHUPは送られることはありません。 仮想画面の端末に所属するプロセスはデタッチによる影響をまったく受けることなく動作し続けます。
このデタッチされたscreenセッションをいつでも呼び出すことができます。この操作のことをアタッチといいます。
screenセッションのアタッチ(シングル)
シェルからscreen -r {プロセス番号}と入力する。
(ただしdetachされたセッションが1つしかない場合はプロセス番号省略可)
このデタッチ-アタッチ機能を用いれば、仮想画面環境を維持したまま端末から
ログアウトできます。例えば夜帰宅するときにデタッチして端末から抜け、
明日の朝にアタッチすれば、すぐに前日の環境に復旧できます。
回線が切断されるなどの原因で、screenプロセスにたいしてSIGHUPが送られると、
自動的にデタッチされます(オートデタッチ)。
言い換えると、不安定な回線で作業しているいる時、不意に回線が切断されたときも
screenを使っていれば、自動的にデタッチされるため、
ログインし直してからアタッチすれば、すぐに復旧できるということを意味します。
また、端末から端末へ渡り歩くときも便利です。
端末を離れるときにデタッチしてから、新しい端末でアタッチすればいいのです。
また、デタッチしてくるのを忘れた場合、別の端末からリモートデタッチできます。
screenセッションのリモートデタッチ
シェルからscreen -d {プロセス番号}と入力する。
または、シェルからscreen -D {プロセス番号}と入力する。
(ただしdetachされたセッションが1つしかない場合はプロセス番号省略可)
-Dオプションの場合はリモートの端末で、screenを実行していたシェルを ログアウトさせます。これをパワーデタッチといいます。
また、ふたつ以上の端末から同じscreenセッションに同時にアタッチすることもできます。
screenセッションのアタッチ(マルチ)
シェルからscreen -x {プロセス番号}と入力する。
(ただしdetachされたセッションが1つしかない場合はプロセス番号省略可)
マルチアタッチした場合どちらの端末からも同一の仮想画面へキー入力できます。
デスクトップとサブノートの双方からtelnetし、マルチアタッチしておくと非常に便利です。
またマルチアタッチは、異なるユーザの端末からでも可能です。その場合アクセス権限をコントロールすることができます。
例えば、教育目的で指導者と生徒を同じセッションにマルチアタッチすると、非常に高い学習効果が得られることでしょう(バーチャル背後霊)。