Buat layar GNU selamat dari reboot

18

Saya banyak menggunakan layar GNU. Saya merasa sangat menjengkelkan bahwa setiap kali server harus di-reboot, saya kehilangan semua sesi saya (bahkan jika saya tahu sebelumnya, saya perlu mengatur semuanya lagi).

Saya telah mencari di web untuk kemungkinan bagaimana membuat layar selamat dari reboot, tetapi tidak menemukan apa pun yang bekerja untuk saya. Beberapa metode yang saya temukan dan ada kekurangan:

  • CryoPID : tampaknya sudah mati, menjanjikan sejak 2005 untuk memasukkan dukungan untuk layar
  • DMCTP : memiliki masalah dengan setuid (), tidak bekerja untuk saya (saya akui saya tidak berusaha sangat keras)
  • beberapa skrip mencoba membuat ulang sesi dari awal; Anda masih kehilangan riwayat dan saya pikir juga variabel lingkungan tidak diatur dengan benar (dan ketika saya mencobanya tidak memunculkan semua sesi)

Mungkin ada yang tahu beberapa proses freezer yang lebih baik? Ini sepertinya cara yang paling menjanjikan.

fuenfundachtzig
sumber
Mungkin Anda harus hibernate alih-alih me-reboot :-) Saya ingat menggunakan DMCTP sejak lama, dan itu berhasil (IIRC, tapi saya tidak yakin ...)
sloth
1
Nah, dalam kebanyakan kasus, pembaruan kernel atau penggantian perangkat kerasnya yang memaksa reboot. (Yang tidak terserah saya sih ...) - DMCTP: Akan tertarik pada cara membuatnya bekerja tanpa mengkompilasi ulang layar (seperti yang disarankan di Internet).
fuenfundachtzig
1
Saya menggunakan tmux sebagai ganti layar dan merasa lebih mudah untuk menulis skrip sesi. Itu tidak "menyimpan" sesi Anda, tetapi Anda dapat dengan mudah mengirim perintah ke tmux untuk melakukan tata letak Anda dan mengirim 'stroke key' ke klien sehingga Anda dapat mengubah direktori dan meluncurkan aplikasi jika diperlukan. Saya yakin Anda bisa melakukannya di layar juga, tapi sepertinya lebih mudah dengan tmux

Jawaban:

13

Tidak ada cara untuk menyimpan sesi layar dengan cara yang Anda inginkan. Apa yang saya lakukan adalah hal terbaik berikutnya: autossh scripted untuk terhubung ke server saya dan mengatur rig saya seperti yang saya suka.

Suka.

Sambungan lokal turun, saya menunggu, itu muncul kembali dan ada pekerjaan saya (saya menggunakan layar bersarang). Server down atau reboot, saya menunggu, dan saya kembali pada posisi default saya. Ini memberi saya perasaan kesinambungan yang saya inginkan.

Ngomong-ngomong, saya menanyakan pertanyaan persis ini bertahun-tahun yang lalu di daftar layar.

Rangkuman: Mencari kehidupan abadi untuk layar. Alih-alih belajarlah untuk bangkit.

Ini adalah daging dari konfigurasi .screenrc:

Ada contoh, rscreen, dalam paket autossh yang saya modifikasi ke dalam program econnect.

Parameter --esc adalah untuk mengatur pelarian layar jarak jauh ke sesuatu yang berbeda (pelarian saya adalah `)

#add much much more scrollback
defscrollback 10000

# make some default windows

screen -t ADMIN     1
chdir /Users/chiggsy/Sites/
screen -t SITES    2
chdir /Users/chiggsy/src/
screen -t SRC 3
chdir
screen -t FERGUS  4 /Users/chiggsy/bin/econnect --host host.example.com --port 50000 --esc g --user sol
screen -t LAEG 5  /Users/chiggsy/bin/econnect --host host.example2.com --port 505000  --esc g --user invictus

screen -t ROOT      0   sudo su -m
chiggs
sumber
2

Lihat: http://skoneka.github.io/screen-session/

Available screen-session modes: 

---- 
save              - save Screen ( and VIM ) session 
load              - load session 
ls                - list saved sessions 
---- 

dump              - print detailed informations about windows in the session 
group             - move windows to a group 
layoutlist        - display a list of layouts 
layout-checkpoint - record a snapshot of the current layout. 
layout-history    - display saved snapshots of the current layout 
layout-redo       - load a snapshot of the current layout, 
layout-undo       - load a snapshot of the current layout, 
layout-zoom       - zoom into and out of a region 
kill              - send SIGTERM to last the process started in a window 
kill-zombie       - kill all zombie windows in the session 
kill-group        - recursively kill all windows in a group 
manager           - sessions manager (screenie like) but featuring session 
                    preview in a split window 
nest-layout       - copy a layout to the current region 
new-window        - start a new Screen window in the same working directory 
                    on the position next to the current window 
name              - get or set the sessionname 
regions           - display a number in every region (like tmux display-panes) 
renumber          - renumber windows to fill gaps 
subwindows        - recursively print windows contained in groups 
Erik Aronesty
sumber
2

Di Server Fault, pertanyaan yang sama telah menerima satu petunjuk yang tidak ada di sini: gunakan tmuxdengan tmux-resurrect , yaitu:

Pulihkan tmuxlingkungan setelah sistem dinyalakan kembali.

Apa yang dapat dipulihkan untuk Anda:

  • semua sesi, jendela, panel, dan urutannya
  • direktori kerja saat ini untuk setiap panel
  • tata letak panel yang tepat di dalam jendela (bahkan ketika diperbesar)
  • sesi aktif dan alternatif
  • jendela aktif dan alternatif untuk setiap sesi
  • windows dengan fokus
  • panel aktif untuk setiap jendela
  • "sesi yang dikelompokkan" (fitur berguna saat menggunakan tmux dengan beberapa monitor)
  • program yang berjalan dalam panel! Lebih detail dalam dokumen program pemulihan .
serv-inc
sumber