Bagaimana cara memulihkan sesi layar 'hilang'?

80

Entah bagaimana saya berhasil menutup jendela layar tanpa layar 'memperhatikan' itu, sehingga sesi masih ditandai sebagai attached. Ini mencegah saya melampirkan kembali sesi ini. Apa yang dapat saya?

me@iupr-serv8:~$ screen -r
There are several suitable screens on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:34 PM)    (Attached)
    24658.pts-19.XXX-serv8  (01/05/2012 07:11:38 PM)    (Detached)
    24509.pts-19.XXX-serv8  (01/05/2012 07:10:00 PM)    (Detached)
    18676.pts-5.XXX-serv8   (01/02/2012 06:55:33 PM)    (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
me@XXX-serv8:~$ screen -r 25028
There is a screen on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:33 PM)    (Attached)
There is no screen to be resumed matching 25028.

[memperbarui]

Pada akhirnya saya tahu, bahwa sesi itu tidak hilang, tetapi ID dari sesi pertama adalah 0. Sesi kedua daripada memiliki ID 1.

Framester
sumber

Jawaban:

108

Coba lepaskan dulu dengan screen -d. Jika itu tidak berhasil, Anda dapat mencoba, dengan meningkatkan urutan penekanan ,

   -d|-D [pid.tty.host]
        does  not  start screen, but detaches the elsewhere running screen session. It has the
        same effect as typing "C-a d" from screen's controlling terminal. -D is the equivalent
        to  the  power  detach key.  If no session can be detached, this option is ignored. In
        combination with the -r/-R option more powerful effects can be achieved:

   -d -r   Reattach a session and if necessary detach it first.

   -d -R   Reattach a session and if necessary detach or even create it first.

   -d -RR  Reattach a session and if necessary detach or create it. Use the first  session  if
           more than one session is available.

   -D -r   Reattach a session. If necessary detach and logout remotely first.

   -D -R   Attach  here and now. In detail this means: If a session is running, then reattach.
           If necessary detach and logout remotely first.  If it was not running create it and
           notify the user. This is the author's favorite.

   -D -RR  Attach here and now. Whatever that means, just do it.
angus
sumber
11
yang -d -rpilihan bersama-sama akan memaksa melampirkan sesi itu.
Tim Kennedy
Saya selalu menggunakan screen -xsehingga saya bisa melampirkan dari beberapa lokasi sekaligus. Tentu saja, jika Anda secara tidak sengaja menutup jendela, sepertinya -d -rlebih baik hanya menjaga keadaan tetap rapi.
mpontillo
5
screen -r '1234.somescreensession'

Ada layar di:

1234.somecreensession (Terlampir)

Tidak ada layar untuk dilanjutkan yang cocok dengan 1234.somecreensession.

Berikut adalah cara sederhana untuk mengambil kembali sesi layar itu.

screen -D -r '1234.somescreensession'
bresti
sumber
4

Saya mengalami masalah yang sama setelah koneksi ssh saya menutup secara tak terduga dengan pesan Write Failed: broken pipesementara saya memiliki sesi layar terpasang. Namun, saya tidak bisa mendapatkan sesi layar untuk memasang kembali menggunakan salah satu perintah di atas. Perhatikan bahwa saya menggunakan versi berikut:

~> screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

Rupanya, masih ada contoh sshdberlari, yang membuat saya tidak melepaskan dan menempel kembali sesi. Setelah mengidentifikasi PIDcontoh yang sesuai sshddan killmemasukkannya, saya dapat menyambung kembali screen -r.


Sekedar informasi: Anda pasti akan menemukan lebih dari satu sshdiblis, satu akan sesuai dengan login Anda saat ini dan yang lain milik screensesi basi (memang, mungkin ada beberapa lainnya sshdberjalan milik beberapa lainnya screen).

el_tenedor
sumber
Saya memiliki masalah panggilan yang sama
dianovich
3

Beberapa kali beberapa layar berjalan di latar belakang.

Mereka dapat dilanjutkan dengan:

screen -r [pid]

Untuk mendapatkan layar, jalankan pertama screen -R, maka Anda akan melihat semua PID layar berjalan, setelah itu dilanjutkan oleh screen -r [pid].

Shiv Singh
sumber