Tidak dapat melanjutkan layar, katanya saya sudah terpasang?


151

Saya bekerja di server Debian Jessie jarak jauh. Saya sudah memulai sesi layar, mulai menjalankan skrip, kemudian terputus oleh batas waktu jaringan.

Sekarang saya sudah login lagi dan ingin melanjutkan sesi.

Ini yang saya lihat ketika saya daftar layar:

$ 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.

Saya sepertinya dilampirkan ke dua layar sekaligus.

Sekarang saya ingin melanjutkan sesi yang saya jalankan sebelumnya, untuk melihat hasil skrip saya:

$ 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.

Mengapa saya tidak dapat melampirkan kembali?

Saya memiliki masalah yang sama dengan layar lainnya:

$ 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.

Jawaban:


242

Sesi masih terpasang di terminal lain. Server belum mendeteksi pemadaman jaringan pada koneksi itu: ia hanya mendeteksi pemadaman ketika mencoba mengirim paket dan mendapat kesalahan kembali atau tidak ada respons setelah batas waktu, tetapi ini belum terjadi. Anda berada dalam situasi umum di mana klien mendeteksi pemadaman karena mencoba mengirim beberapa input dan gagal, tetapi server hanya duduk di sana menunggu input. Akhirnya server akan mengirim paket keepalive dan mendeteksi bahwa koneksi mati.

Sementara itu, gunakan -dopsi untuk melepaskan sesi layar dari terminal di mana ia berada.

screen -r -d 30608

screen -rd cukup banyak cara standar untuk melampirkan ke sesi layar yang ada.


15
Untuk melampirkan ke sesi layar yang ada, itu screen -x, screen -rdadalah untuk melampirkannya setelah terlepas dari setiap terminal yang dilampirkan. Dalam kasus OP, saya setuju yang terakhir mungkin lebih disukai, tetapi dalam kasus umum, belum tentu. Saya biasanya menggunakan -xRuntuk melampirkan atau membuat jika tidak ada yang dilampirkan.
Stéphane Chazelas

10

Menurut manual, Anda dapat "melanjutkan" hanya layar yang terlepas :

' [cocok] ' ' [cocok] ' Jangan mulai layar, tetapi sebaliknya cetak daftar string identifikasi sesi (biasanya dari bentuk pid.tty.host; lihat Nama Sesi). Sesi bertanda 'terlepas' dapat dilanjutkan dengan . Yang bertanda 'terlampir' sedang berjalan dan memiliki terminal pengendali. Jika sesi berjalan dalam mode multi-pengguna, itu ditandai 'multi'. Sesi yang ditandai sebagai 'tidak dapat dijangkau' hidup di host yang berbeda atau mati. Sesi yang tidak terjangkau dianggap mati, ketika namanya cocok dengan nama host lokal, atau parameter yang ditentukan, jika ada. Lihat-ls
-list
screen -r-rberi tanda untuk deskripsi cara membuat korek api. Sesi yang ditandai sebagai 'mati' harus diperiksa dan dihapus secara menyeluruh. Tanyakan kepada administrator sistem Anda jika Anda tidak yakin. Hapus sesi dengan opsi ' -wipe'.

Apa yang Anda inginkan adalah opsi ini:

' -x'
Lampirkan sesi yang sudah terpasang di tempat lain (mode multi-display). Layar menolak untuk melampirkan dari dalam dirinya sendiri. Tetapi ketika cascading beberapa layar, loop tidak terdeteksi; hati hati.


4
Dengan -xsesi masih akan terpasang 'di suatu tempat'. Untuk sepenuhnya mengambil alih sesi seseorang harus menggunakan -d | -D (opsi detach) bersama dengan -r | -R (opsi reattach).
Andrew Kozlov 3-15

1
Itu alternatif, tetapi mungkin bukan apa yang dibutuhkan OP. Saya sering melampirkan dari beberapa lokasi.
Thomas Dickey 15

4

Saya atase ke layar dengan opsi -rD

Dari manual:

-D -r
Reattach a session. If necessary detach and logout remotely first. 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.