Pasang kembali atau buat sesi layar bernama? (atau sesi layar persisten)

27

Pada dasarnya saya memiliki sesi layar jauh, yang ingin saya pasang kembali secara otomatis .. Saat ini saya melakukan ini dengan dengan perintah berikut (sebagai bookmark iTerm, atau alias)

ssh host -t screen -x thesessionname

Ini berfungsi dengan baik, tetapi jika sesi itu mati karena alasan apa pun, saya ingin itu dibuat kembali ketika saya terhubung berikutnya. The -Rbendera untuk screenadalah hampir sempurna:

ssh host -t screen -R -S thesessionname

..tapi jika sesi sudah terlampir, sesi kedua akan dibuat (seperti -Rterlihat sederhana untuk sesi terpisah pertama, jika tidak ada yang ditemukan itu membuat yang baru)

Apakah ada cara untuk membuat -Rbendera mencari sesi terlampir juga, dan hanya membuat yang baru jika thesessionnametidak ada?

Jika ini tidak mudah dilakukan, bagaimana saya bisa secara otomatis membuat ulang sesi layar ketika mati? Mungkin skrip dijalankan melalui cron yang mencari sesi bernama, membuatnya jika itu tidak ada?

dbr
sumber

Jawaban:

32

Katakan layar untuk sedikit lebih gigih tentang mencoba:

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

Jadi gabungkan keduanya dan Anda harus memiliki solusi Anda ("-DR" setara dengan "-D -R"):

screen -DR <yoursession> 

Selain itu dan berguna untuk diketahui, Anda dapat melihat sesi lari dengan:

screen -ls
Dan Carley
sumber
5
Sempurna, screen -x -R -S mainitulah yang akhirnya saya gunakan (bekerja sama tanpa paksa-lepas), terima kasih!
dbr
Terkadang Anda ingin menggunakan sceen -r <yoursession>, akan memberikan kesalahan ketika sudah terlampir (bukannya membuat sesi baru).
hazard89
11

Beberapa pilihan bagus. Pertama, favorit saya:

screen -x -R

Itu akan dilampirkan ke sesi layar pertama yang tersedia (berbagi jika koneksi lain terhubung), dan jika tidak ada sesi layar sama sekali, mulailah yang baru.

screen -d -RR

Documents untuk itu mengatakan "Pasang kembali sesi dan jika perlu lepaskan atau buat. Gunakan sesi pertama jika lebih dari satu sesi tersedia." Pada dasarnya, double-R membuatnya mencari sesi pertama untuk dilampirkan.

screen -D -RR

"Lampirkan di sini dan sekarang. Apa pun artinya itu, lakukan saja." Akan melepaskan dan keluar dari sesi terlampir lainnya dan melampirkan sesi pertama yang bisa dilakukan. Pada dasarnya, lakukan apa pun yang perlu dilakukan untuk melampirkan ke sesi yang ada, dan membuat yang baru jika tidak ada di sana.

Yang pertama (-x -R) adalah yang paling kecil kemungkinannya menyebabkan masalah (tidak akan melepaskan koneksi Anda yang lain) tetapi hanya selalu menempel pada sesuatu jika ada sesuatu untuk dilampirkan dan menciptakan sesuatu jika tidak ada yang dilampirkan.

freiheit
sumber
1
Ini semua adalah opsi yang bagus / berguna, tetapi tidak satupun dari mereka menjawab pertanyaan awal, yaitu untuk (kembali) terhubung ke sesi dengan nama .
Daniel
5

saya menggunakan

screen -dRRS sessname

Saya tidak ingin seluruh login saya di shell lain dibatalkan, seperti -Dhalnya, dan saya jelas tidak ingin mode multi-attach -x.

kekacauan
sumber