Layar tidak bisa dilepas untuk melanjutkan


11

Saya menggunakan dempul dan memiliki koneksi nirkabel yang tidak dapat diandalkan, jadi saya menggunakan layar untuk menjaga pekerjaan saya tetap berjalan. Seringkali saya akan terputus, dan kemudian saya tidak bisa memasang kembali layar saya. Saya akan lari screen -D -RRdan hanya akan duduk di sana tanpa batas. Saya sudah mencoba ctrl+zmendapatkan konsol saya kembali, diikuti oleh ps aux | grep screendan kemudian kill -9untuk semua hasil, dan sekali screen -D -RRlagi tetapi saya mendapatkan hasil yang sama. Saya mencoba kombinasi d's dan r yang ingin Anda sebutkan, tapi tetap saja ada di sana. Layar saya ada di sana, tidak akan melakukan apa-apa, apalagi resume.

Adakah yang punya tips atau trik atau ide untuk bagaimana agar sesi layar saya dilanjutkan?

Jawaban:


16

Saya pernah melihat ini ketika saya menjatuhkan koneksi ke layar aktif lalu menyambung kembali. Bug # 27462 ("Sambungkan kembali kios saat sesi asli hilang") menjelaskan masalah seperti yang saya lihat. Apa yang tampaknya terjadi adalah bahwa layar sedang mencoba memberi tahu tty yang menahannya bahwa akan segera pergi, tetapi karena tty digantung karena koneksi yang terputus, ia harus menunggu batas waktu terjadi (yaitu lebih dari lima menit) dalam beberapa kasus).

Untuk memperbaikinya, saya melakukan ini:

  • mencari tahu tty mana yang memegang sesi layar ps -ef | grep screen | grep pty
  • temukan bash login yang terkait dengan tty itu ps -ef | grep bash | grep $PTY
  • bunuh bash itu kill -KILL $PID

Ini menyebabkan layar menyelesaikan pemutusannya dengan benar, dan memungkinkan Anda menghubungkan kembali secara normal.

Lihat di sini untuk contoh skrip yang mengotomatisasi ini.


ps-id | layar grep | grep tty tidak pernah mencetak apapun karena ps -ef | layar grep tidak pernah mengembalikan apa pun dengan string tty.
Dave Aaron Smith

Sebenarnya skrip contoh tampaknya melakukan trik. Terima kasih!
Dave Aaron Smith

1
Ya, maksudku 'pty', bukan 'tty'.
David Mackintosh

2

Saya memiliki masalah serupa dengan sesi layar saya. Saya menamai mereka dan mengaturnya sebagai sesi multi-pengguna. Apa yang saya temukan adalah bahwa itu adalah daftar sesi saya, tetapi mengatakan kepada saya bahwa saya tidak memiliki satu pun untuk terhubung kembali. Lalu saya mencoba:

screen -x <session_name>

Itu bekerja seperti juara!


1

Saya tidak bisa mengatakan saya pernah memiliki masalah dengan layar tidak kembali, tidak peduli apa pun jenis koneksi saya. Metode saya yang biasa:

ssh myname@foo
screen -S sessionName
(do my work... get disconnected...)

ssh myname@foo
screen -d (just to make sure anything wasn't left attached)
screen -r sessionName

1
Misalnya layar-daftar mengembalikan 32322.mySession (Terlampir). Lalu saya menyaring -d mySession. Kemudian layar-daftar masih mengembalikan 32322.mySession (Terlampir), dan layar -r mySession kembali Tidak ada layar untuk dilanjutkan daveSession yang cocok.
Dave Aaron Smith

Apakah Anda mencoba "screen -d"?
Jason Antman


0

Soulrce: https://kb.iu.edu/data/ahrm.html

To see your existing screen sessions, enter:
  screen -list
This will display a list of your current screen sessions. For instance, if you had one attached screen, you would see:

         1636.pts-21.hostname      (Attached)

To detach an attached screen, enter:
  screen -D
If you have more than one attached screen, you can specify a particular screen to detach. For example, to detach the screen in the above example, you would enter:
  screen -D 1636.pts-21.hostname

0

Jika Anda cerdas seperti saya, Anda mencoba melanjutkan sesi layar yang dimulai rootdengan akun pengguna biasa. Menemukan ini dengan ls /var/run/screenmenunjukkan kepada saya direktori untukroot


0

Saya kadang-kadang memiliki masalah yang sama (layar -r -d tidak melanjutkan, tidak responsif). Untuk memperbaikinya, cari terminal (tty / pty) yang terkait dengan sesi layar:

screen -list
There is a screen on:
    28176.pts-51.localhost        (Attached)
1 Socket in /tmp/uscreens/S-xxxx.

Temukan terminal yang terdaftar (dalam contoh ini Poin-51):

ps axuw | grep 'pts/51'   # will vary depending upon how pty's are named
you     12293  0.0  0.2  2148 1128 pts/51   Ss   10:34   0:00 -bash

Matikan proses pada terminal itu (biasanya shell Anda):

kill 12293

jalankan ps lagi untuk memastikan itu hilang. Jika tidak :

kill -9 12293

Di server saya (gnu / linux), saya terkadang harus membunuh -9 beberapa kali sampai mati.

Setelah semua proses pada tty itu hilang, layar harus dilanjutkan dengan benar:

screen -r -d

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.