Pertanyaan Menyambungkan kembali ke sesi layar yang ada


Saya memiliki program yang berjalan di bawah layar. Bahkan, ketika saya melepaskan dari sesi dan memeriksa netstat, saya dapat melihat program masih berjalan (yang saya inginkan):

udp        0      0 127.0.0.1:1720          0.0.0.0:*                           3759/ruby       

Sekarang saya ingin memasang kembali ke sesi menjalankan proses itu. Jadi saya memulai terminal baru, dan ketik layar -r

$ screen -r
There are several suitable screens on:
    5169.pts-2.teamviggy    (05/31/2013 09:30:28 PM)    (Detached)
    4872.pts-2.teamviggy    (05/31/2013 09:25:30 PM)    (Detached)
    4572.pts-2.teamviggy    (05/31/2013 09:07:17 PM)    (Detached)
    4073.pts-2.teamviggy    (05/31/2013 08:50:54 PM)    (Detached)
    3600.pts-2.teamviggy    (05/31/2013 08:40:14 PM)    (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Tapi bagaimana saya tahu yang mana sesi yang menjalankan proses yang saya buat?

Sekarang salah satu dokumen yang saya temui mengatakan:

"Saat Anda menggunakan jendela, ketik Ca A untuk memberinya nama. Nama ini akan digunakan dalam daftar jendela, dan akan membantu Anda mengingat apa yang Anda lakukan di setiap jendela saat Anda mulai menggunakan banyak jendela. "

Masalahnya adalah ketika saya berada di sesi layar baru, saya mencoba menekan kontrol + A dan tidak ada yang terjadi.


57
2018-06-01 01:39


asal


Cara cepat untuk memilih satu dari a daftar dari beberapa layar terbuka, adalah screen -r diikuti oleh angka 1, 2, 3 ... di daftar layar itu. - user18099


Jawaban:


Ada dua tingkat "daftar" yang terlibat di sini. Pertama, Anda memiliki "daftar jendela" dalam sesi individu, yang merupakan ctrl-A A, dan kedua ada "daftar sesi" yang adalah apa yang Anda tempelkan di pertanyaan Anda dan apa yang juga dapat dilihat dengan screen -ls.

Anda dapat menyesuaikan nama sesi dengan -S parameter, selain itu menggunakan nama host Anda (teamviggy), misalnya:

$ screen

(ctrl-A d detach)

$ screen -S myprogramrunningunderscreen

(ctrl-A d detach)

$ screen -ls

There are screens on:
    4964.myprogramrunningunderscreen    (05/31/2013 09:42:29 PM)    (Detached)
    4874.pts-1.creeper  (05/31/2013 09:39:12 PM)    (Detached)
2 Sockets in /var/run/screen/S-paul.

Sebagai bonus, Anda dapat menggunakan singkatan yang tidak ambigu dari nama yang Anda berikan -S nanti untuk terhubung kembali:

screen -r myprog

(Saya terhubung kembali ke myprogramrunningunderscreen sidang)


70
2018-06-01 02:48



Itu ctrl + a a bekerja untuk Anda? Saya menekan kontrol + pada saat yang sama dan kemudian dengan cepat menekan lagi dan tidak ada yang terjadi. - JohnMerlino
Iya nih; ada perbedaan antara ctrl-A a dan ctrl-A shift-A. Yang terakhir mendorong saya untuk melakukannya Set window's title to:. Pastikan Anda menekan shift untuk huruf A. kedua - Paul
Saya melakukan: "layar -r 21tweet" dan dapatkan sebagai tanggapan: "Ada layar di: 3239.21tweet (08/21/2015 09:14:35 AM) (Terlampir) Tidak ada layar yang akan dilanjutkan dengan pencocokan 21tweet." Apa ini? - Michael
Peringatan yang sangat tidak jelas dengan sesi penamaan layar adalah jika Anda menyebutkannya -S, Anda harus menggunakan setidaknya singkatan yang tidak ambigu dari nama yang mengikuti nomor ID dan titik dalam nama lengkap sesi layar saat melanjutkan, tidak seperti nama sesi yang dibuat secara otomatis, di mana Anda dapat menyertakan ID dan titik. - Spencer Williams
Typo, diperbaiki. Dan situs ini tidak akan membiarkan saya memposting komentar yang singkat tanpa teks tambahan. - Paul


Saya punya kasus di mana screen -r gagal untuk memasang kembali. Menambahkan -d bendera jadi terlihat seperti ini

screen -d -r

bekerja untukku. Ini memisahkan layar sebelumnya dan memungkinkan saya untuk memasang kembali. Lihat Halaman Man untuk informasi lebih lanjut.


15
2017-12-01 20:31





Cara mudah adalah cukup menyambungkan kembali ke layar sewenang-wenang dengan

screen -r

Kemudian setelah Anda menjalankan layar, Anda bisa mendapatkan daftar semua layar aktif dengan menekan Ctrl-A " (yaitu kontrol-A diikuti oleh kutipan ganda). Kemudian Anda dapat memilih layar aktif satu per satu dan melihat apa yang sedang mereka jalankan. Penamaan layar akan, tentu saja, membuatnya lebih mudah untuk mengidentifikasi yang tepat.

Hanya dua sen saya


11
2017-07-08 15:36



okie bagaimana saya memberi nama layar saya? - austin
@ layar layar-S <sessionname> - Brian


Saya cenderung menggunakan kombo berikut di mana saya perlu bekerja pada beberapa mesin dalam beberapa kluster:

screen -S clusterX

Ini menciptakan sesi layar baru di mana saya dapat membangun lingkungan.

screen -dRR clusterX

Ini adalah apa yang saya gunakan selanjutnya untuk memasang kembali ke sesi layar itu. Bit yang bagus adalah jika sesi dilekatkan di tempat lain, ia akan melepaskan tampilan lainnya. Selain itu, jika tidak ada sesi untuk beberapa alasan yang aneh, seperti seseorang me-reboot server saya tanpa sepengetahuan saya, itu menciptakan satu. Akhirnya. jika ada beberapa sesi, itu menggunakan yang pertama.

Banyak pujian untuk https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen-instructions untuk tip ini beberapa waktu lalu.

EDIT:

Juga inilah beberapa penjelasan yang bermanfaat dari man screen pada parameter samar

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

ada lebih banyak dengan -D jadi pastikan untuk memeriksanya man screen


2
2018-01-04 10:01





Output dari screen -list diformat seperti pid.tty.host. Pids dapat digunakan untuk mendapatkan proses anak pertama dengan pstree:

screen -list|cut -f1 -d'.'|cut -f2|xargs -n 1 pstree -p|grep "^screen"

Anda akan mendapatkan daftar seperti ini

screen(5169)---zsh(5170)---less(15268)
screen(4872)---zsh(4873)-+-cat(11364)
...

1
2018-03-14 17:12





screen -d -r 4964

atau

screen -d -r 4874

$ screen -ls
There are screens on:
4964.myprogramrunningunderscreen    (05/31/2013 09:42:29 PM)    (Detached)
4874.pts-1.creeper  (05/31/2013 09:39:12 PM)    (Detached)
2 Sockets in /var/run/screen/S-paul.

0
2017-08-24 02:21