私はリモートDebian Jessieサーバーで作業しています。スクリーンセッションを開始してスクリプトの実行を開始した後、ネットワークタイムアウトにより接続が切断されました。
もう一度ログインしてセッションを再開したいと思います。
一覧画面が表示されたら、次のようになります。
$ screen -ls
There are screens on:
30608.pts-8.myserver (11/03/2015 08:47:58 AM) (Attached)
21168.pts-0.myserver (11/03/2015 05:29:24 AM) (Attached)
7006.pts-4.myserver (10/23/2015 09:05:45 AM) (Detached)
18228.pts-4.myserver (10/21/2015 07:50:49 AM) (Detached)
17849.pts-0.myserver (10/21/2015 07:43:53 AM) (Detached)
5 Sockets in /var/run/screen/S-me.
2つの画面に同時に接続されていると思います。
それでは、以前に実行したセッションを再開してスクリプトの結果を確認します。
$ screen -r 30608.pts-8.myserver
There is a screen on:
30608.pts-8.OpenPrescribing (11/03/2015 08:47:58 AM) (Attached)
There is no screen to be resumed matching 30608.pts-8.myserver.
なぜ再接続できないのですか?
他の画面でも同じ問題があります。
$ screen -r 21168.pts-0.myserver
There is a screen on:
21168.pts-0.OpenPrescribing (11/03/2015 05:29:24 AM) (Attached)
There is no screen to be resumed matching 21168.pts-0.myserver.
ベストアンサー1
セッションはまだ他の端末に接続されています。サーバーはまだこの接続でネットワークの中断を検出していません。パケット送信を試み、タイムアウト後にエラーを受信した場合、または応答がない場合にのみ中断を検出しましたが、まだこれは発生していません。一般的に発生する状況は、クライアントがいくつかの入力を送信しようとしましたが、失敗して中断を検出しましたが、サーバーは入力を待つだけです。結局のところ、サーバーはコネクション保持パケットを送信し、接続が失われたことを検出します。
また、この-d
オプションを使用して、現在の端末からスクリーンセッションを切り離します。
screen -r -d 30608
screen -rd
既存のスクリーンセッションに接続する標準的な方法とほぼ同じです。