Saya menggunakan irssi di layar tetapi kehilangan koneksi. Setelah saya ssh kembali ke server, saya tidak bisa lagi melampirkan ke layar itu. layar -l menunjukkan bahwa layar sudah terpasang.
Saya mencoba layar -D untuk memaksa melepaskannya, dan katanya lepas tapi layar -l masih mengatakan itu terpasang. Saya mencoba layar -x dan hanya hang di sana.
[sub@server ~]$ screen -ls
There are screens on:
4033.poe (Detached)
7728.irssi (Attached)
2 Sockets in /var/run/screen/S-sub.
Apa yang bisa saya lakukan sekarang?
sumber
Anda memberinya nama yang tidak standar. Coba ini:
screen -RD irssi
sumber
Anda dapat mencoba:
itu selalu merupakan ide bagus menggunakan nama lengkap
pid.tty
sumber
screen
dikenal karena tidak kompatibel di antara versi. Jika versiscreen
telah diperbarui di server, Anda mungkin tidak dapat melampirkan kembali ke sesi layar yang lebih lama.Dalam hal ini, Anda bisa menggunakan biner SCREEN lama untuk memasang kembali (asalkan manajer paket distribusi Anda menyimpannya di suatu tempat), atau membunuh sesi sama sekali.
sumber
Saya sudah cukup sukses dengan mengirimkan proses GNU / layar SIGCHLD (yang biasanya diterima ketika jendela ditutup), ini memaksa untuk menyentuh (dan mungkin membuat ulang) file socket.
Perhatikan juga bahwa ada dua cara untuk menjalankan
screen
executable yang hanya berbeda dalam hal:SCREEN
adalah komponen sisi server yang Anda coba sambungkan kembali, sedangkanscreen
sisi klien yang mengocok data antara terminal Anda dan sisi server. Jadi, Anda mungkin ingin mencoba membunuh versi huruf kecil ...Misalnya dalam berikut ini Anda dapat melihat bahwa proses saya
screen
danSCREEN
tidak dianggap sebagai orangtua dan anak, menunjukkan bahwa saya telah melampirkan ke sesi yang ada.Sesi baru lebih terlihat seperti ini:
sumber
kill
perintah yang dinamai seperti ini: dikill -s SIGCHLD <PID>
mana<PID>
nomor ID Proses (kolom paling kiri dalam contoh output saya)Ini terjadi pada saya ketika saya menggunakan vi di mana sesi membeku dan saya terputus. Saat mencoba memasang kembali layar menggunakan -Arx, prosesnya akan hang.
Mungkin ada proses anak serupa yang berjalan menyebabkan layar menggantung. Jika Anda mengingat satu fokus tertentu pada hal itu, jika tidak untuk mendapatkan daftar proses anak yang berjalan di bawah layar Anda lakukan:
Yang akan menunjukkan proses anak bersarang:
Setelah membunuh proses vi yang menyebabkan masalah di tempat pertama, saya bisa memasang kembali layar tanpa masalah. Membunuh semua proses sebelumnya yang telah dipasang kembali ke layar mungkin merupakan ide yang bagus juga. Cukup gunakan:
Saya tidak tahu apa yang dilakukan layar di internal, mengapa vi menyebabkan layar hang, atau mengapa membunuh proses vi membawa layar saya kembali. Saya pernah mengalami masalah dengan layar di masa lalu dan telah mencoba apa yang kebanyakan orang merekomendasikan di utas ini tanpa hasil. Menemukan masalah ini, proses anak adalah satu-satunya hal yang berhasil bagi saya dan telah bekerja secara konsisten pada saat itu.
sumber
sumber
Itu berhasil untuk saya. Saya memiliki 3 layar berbeda, dan saya kehilangan 3 koneksi ssh berbeda. Setelah tersambung kembali, layar masih terpasang, saya mengeluarkan perintah di atas ... tentu saja saya kehilangan koneksi saya saat ini, tapi itu baru. Pada koneksi ulang berikutnya, setiap layar terlepas.
Catatan, jika Anda adalah pengguna super maka Anda harus menggunakan
--user
opsi untuk hanya membunuh dasmon ssh Anda.sumber