Saya memiliki program yang berjalan di bawah layar. Bahkan, ketika saya melepaskan diri 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 menyambung 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.
Tetapi bagaimana saya tahu sesi mana yang menjalankan proses yang saya buat?
Sekarang salah satu dokumen yang saya temui mengatakan:
"Ketika Anda menggunakan jendela, ketikkan Ca A untuk memberinya nama. Nama ini akan digunakan dalam daftar jendela, dan akan membantu Anda mengingat apa yang Anda lakukan di setiap jendela ketika Anda mulai menggunakan banyak jendela. "
Masalahnya adalah ketika saya berada di sesi layar baru, saya mencoba untuk menekan kontrol + a dan tidak ada yang terjadi.
sumber
screen -r
diikuti oleh angka 1, 2, 3 ... dalam daftar layar itu.Jawaban:
Ada dua level "daftar" yang terlibat di sini. Pertama, Anda memiliki "daftar jendela" dalam sesi individual, untuk apa ctrl-A A, dan kedua ada "daftar sesi" yang merupakan apa yang Anda tempelkan dalam pertanyaan Anda dan apa yang juga dapat dilihat
screen -ls
.Anda dapat menyesuaikan nama sesi dengan
-S
parameter, jika tidak menggunakan nama host Anda (teamviggy), misalnya:(ctrl-A d untuk melepaskan)
(ctrl-A d untuk melepaskan)
Sebagai bonus, Anda dapat menggunakan singkatan nama yang Anda berikan
-S
untuk menghubungkan kembali:(Saya terhubung kembali ke
myprogramrunningunderscreen
sesi)sumber
ctrl-A a
danctrl-A shift-A
. Yang terakhir mendorong saya untukSet window's title to:
. Pastikan Anda menekan shift untuk A. kedua-S
, Anda harus menggunakan paling tidak singkatan singkatan nama mengikuti nomor ID dan titik dalam nama lengkap sesi layar saat melanjutkan, tidak seperti otomatis nama sesi yang dihasilkan, tempat Anda bisa memasukkan ID dan titik.Saya punya kasus di mana
screen -r
gagal untuk menyambung kembali. Menambahkan-d
bendera sehingga tampak seperti inibekerja untukku. Ini terlepas dari layar sebelumnya dan memungkinkan saya untuk memasang kembali. Lihat Halaman Man untuk informasi lebih lanjut.
sumber
Cara mudah adalah dengan menghubungkan kembali ke layar yang sewenang-wenang
Kemudian setelah Anda menjalankan layar, Anda bisa mendapatkan daftar semua layar aktif dengan menekan
Ctrl-A "
(yaitu kontrol-A diikuti dengan tanda kutip ganda). Kemudian Anda bisa memilih layar aktif satu per satu dan melihat apa yang sedang berjalan. Memberi penamaan layar tentu saja akan memudahkan untuk mengidentifikasi yang benar.Hanya dua sen saya
sumber
Saya cenderung menggunakan kombo berikut ini di mana saya perlu mengerjakan beberapa mesin di beberapa kelompok:
Ini menciptakan sesi layar baru di mana saya dapat membangun lingkungan.
Inilah yang saya gunakan selanjutnya untuk menyambung kembali ke sesi layar itu. Bit yang bagus adalah bahwa jika sesi dilampirkan di tempat lain, itu melepaskan tampilan lainnya. Selain itu, jika tidak ada sesi untuk alasan yang aneh, seperti seseorang me-reboot server saya tanpa saya sadari, itu akan membuatnya. Akhirnya. jika ada beberapa sesi, ia menggunakan yang pertama.
Banyak pujian untuk https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen-instructions untuk tip ini beberapa waktu yang lalu.
SUNTING:
Juga ada beberapa penjelasan bermanfaat
man screen
tentang parameter crypticada lebih banyak dengan
-D
jadi pastikan untuk memeriksaman screen
sumber
Output dari
screen -list
diformat sepertipid.tty.host
. Pids dapat digunakan untuk mendapatkan proses anak pertama denganpstree
:Anda akan mendapatkan daftar seperti ini
sumber
atau
sumber