Fai sopravvivere il riavvio dello schermo GNU


18

Sto usando molto lo schermo GNU. Trovo molto fastidioso che ogni volta che il server debba essere riavviato, perdo tutte le mie sessioni (anche se so in anticipo, devo impostare di nuovo tutto).

Ho cercato sul web le possibilità su come far sopravvivere il riavvio dello schermo, ma non ho trovato nulla che funzioni per me. Alcuni dei metodi che ho trovato e ci sono difetti:

  • CryoPID : sembra essere morto, promettendo dal 2005 di includere il supporto per lo schermo
  • DMCTP : ha problemi con setuid (), non ha funzionato per me (ammetto di non aver provato molto)
  • alcuni script che provano a ricreare la sessione da zero; perdi ancora la tua storia e penso che anche le variabili degli ambienti non siano impostate correttamente (e quando l'ho provato non ha portato a tutte le sessioni)

Forse qualcuno conosce un congelatore di processo migliore? Questo sembra essere il modo più promettente.


Forse dovresti andare in letargo invece di riavviare :-) Ricordo di aver usato DMCTP molto, molto tempo fa e ha funzionato (IIRC, ma non sono sicuro ...)
bradipo

1
Bene, nella maggior parte dei casi gli aggiornamenti del kernel o le sostituzioni hardware che impongono un riavvio. (Che non dipende comunque da me ...) - DMCTP: Sarebbe interessato a come farlo funzionare senza ricompilare lo schermo (come suggerito su Internet).
fuenfundachtzig,

1
Sto usando tmux invece di schermo e trovo più facile scrivere script di sessione. Ciò non "salva" la sessione, ma puoi facilmente inviare comandi a tmux per eseguire il layout e inviare "tasti" al client in modo da poter modificare la directory e avviare le applicazioni se necessario. Sono sicuro che puoi farlo anche sullo schermo, ma è solo più facile con tmux

Risposte:


13

Non è possibile salvare una sessione dello schermo nel modo desiderato. Quello che ho fatto è stata la cosa migliore: autossh con script per connettermi ai miei server e impostare il mio rig nel modo che mi piace.

Lo adoro.

Connessione locale inattiva, aspetto, ritorna su e c'è il mio lavoro (utilizzo schermate nidificate). Server inattivo o riavviato, aspetto e torno nella mia posizione predefinita. Questo mi dà la sensazione di continuità che desideravo.

Ad ogni modo, ho fatto questa domanda esatta anni fa nell'elenco dello schermo.

Riepilogo: cerca la vita non eterna per lo schermo. Invece impara a risorgere.

Questa è la carne della configurazione .screenrc:

C'è un esempio, rscreen, nel pacchetto autossh che ho modificato nel programma econnect.

Il parametro --esc è di impostare la fuga dello schermo remoto su qualcosa di diverso (la mia fuga è `)

#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

Vedi: 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

In Server Fault, la stessa domanda ha ricevuto un suggerimento che manca qui: usare tmuxcon tmux-resurrect , che è:

Ripristina l' tmuxambiente [s] dopo il riavvio del sistema.

Cosa può ripristinare per te:

  • tutte le sessioni, finestre, riquadri e il loro ordine
  • directory di lavoro corrente per ciascun riquadro
  • layout di riquadro esatti all'interno di Windows (anche se ingrandito)
  • sessione attiva e alternativa
  • finestra attiva e alternativa per ogni sessione
  • windows con focus
  • riquadro attivo per ogni finestra
  • "sessioni raggruppate" (funzione utile quando si utilizza tmux con più monitor)
  • programmi in esecuzione all'interno di un riquadro! Maggiori dettagli nei programmi di ripristino doc .
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.