GNU ekranının yeniden başlatılmasını sağlayın


18

GNU ekranını çok kullanıyorum. Sunucunun her yeniden başlatılması gerektiğinde çok can sıkıcı buluyorum Tüm oturumlarımı kaybediyorum (önceden bilsem bile, her şeyi tekrar ayarlamam gerekiyor).

Web'i, ekranın yeniden başlatıldığında nasıl hayatta kalacağını araştırmak için aradım, ancak benim için işe yarayacak hiçbir şey bulamadım. Bulduğum yöntemlerden bazıları ve kusurları var:

  • CryoPID : Ölü gibi görünüyor, 2005'ten bu yana ekran desteğini de içerecek gibi görünüyor
  • DMCTP : setuid () ile ilgili sorunları var, benim için çalışmadı (çok fazla denemediğimi itiraf ediyorum)
  • oturumu sıfırdan yeniden oluşturmaya çalışan bazı komut dosyaları; hala geçmişinizi kaybediyorsunuz ve bence ortam değişkenleri doğru şekilde ayarlanmamış (ve denediğimde tüm oturumları getirmedi)

Belki biri daha iyi bir işlem dondurucu biliyor mu? Bu en umut verici yol gibi görünüyor.


Belki yeniden başlatmak yerine hazırda bekletmelisiniz :-) DMCTP'yi uzun zaman önce kullandığımı hatırlıyorum ve işe yaradı (IIRC, ama emin değilim ...)
tembellik

1
Çoğu durumda, çekirdek güncellemeleri veya yeniden başlatmayı zorlayan donanım değiştirmeleri. (Bu zaten bana bağlı değil ...) - DMCTP: Ekranı yeniden derlemeden (İnternette önerildiği gibi) nasıl çalışacağını merak ediyorum.
fuenfundachtzig

1
Ekran yerine tmux kullanıyorum ve oturum komut dosyaları yazmayı daha kolay buluyorum. Bu, oturumunuzu "kaydetmez" ancak düzeninizi yapmak için tmux'a kolayca komutlar gönderebilir ve istemciye 'tuş vuruşları' gönderebilir, böylece gerekirse dizini değiştirebilir ve uygulamaları başlatabilirsiniz. Ekranda da yapabileceğinize eminim, ama tmux ile daha kolay görünüyor

Yanıtlar:


13

Bir ekran oturumunu istediğiniz şekilde kaydetmenin bir yolu yoktur. Yaptığım bir sonraki en iyi şeydi: sunucularıma bağlanmak ve teçhizatımı istediğim gibi ayarlamak için komut dosyasıyla autossh.

Sevdim.

Yerel bağlantı kesildi, bekliyorum, geri geliyor ve işim var (İç içe ekranlar kullanıyorum). Sunucu kapandı veya yeniden başlatıldı, bekliyorum ve varsayılan konumumdayım. Bu bana istediğim süreklilik hissini veriyor.

Her neyse, bu soruyu yıllar önce ekran listesinde sordum.

Özet: Ekran için sonsuz yaşamı aramayın. Bunun yerine dirilmeyi öğren.

Bu .screenrc yapılandırmasının eti:

Econnect programında değiştirdiğim autossh paketinde bir rscreen örneği var.

--Esc parametresi uzak ekrandan kaçmayı farklı bir şeye ayarlamaktır (çıkışım ``)

#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

2

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

2

Sunucu Hatası'nda, aynı soru burada eksik olan bir ipucu aldı: tmux-resurrecttmux ile kullanın , yani:

tmuxSistem yeniden başlatıldıktan sonra [s] ortamını geri yükleyin .

Sizin için neler geri yükleyebilir:

  • tüm oturumlar, pencereler, bölmeler ve sıraları
  • her bölme için geçerli çalışma dizini
  • pencerelerdeki tam bölme düzenleri (yakınlaştırıldığında bile)
  • aktif ve alternatif oturum
  • her oturum için etkin ve alternatif pencere
  • windows ile odak
  • her pencere için etkin bölme
  • "gruplandırılmış oturumlar" (tmux'u birden çok monitörle kullanırken kullanışlı özellik)
  • bölmede çalışan programlar! Geri yükleme programları hakkında daha fazla bilgi doc .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.