Faire en sorte que l'écran GNU survive au redémarrage


18

J'utilise beaucoup l'écran GNU. Je trouve très ennuyeux que chaque fois que le serveur doit être redémarré, je perds toutes mes sessions (même si je le sais à l'avance, je dois tout configurer à nouveau).

J'ai cherché sur le Web des possibilités pour faire en sorte que l'écran survive à un redémarrage, mais je n'ai rien trouvé qui fonctionne pour moi. Certaines des méthodes que j'ai trouvées et il y a des défauts:

  • CryoPID : semble être mort, promettant depuis 2005 d'inclure le support de l'écran
  • DMCTP : a des problèmes avec setuid (), n'a pas fonctionné pour moi (j'avoue que je n'ai pas essayé très fort)
  • un script essayant de recréer la session à partir de zéro; vous perdez toujours votre historique et je pense aussi que les variables d'environnement ne sont pas correctement définies (et quand j'ai essayé cela n'a pas fait apparaître toutes les sessions)

Peut-être que quelqu'un connaît un meilleur congélateur de processus? Cela semble être la voie la plus prometteuse.


Peut-être que vous devriez hiberner au lieu de redémarrer :-) Je me souviens d'avoir utilisé DMCTP il y a très longtemps et cela a fonctionné (IIRC, mais je ne suis pas sûr ...)
paresseux

1
Eh bien, dans la plupart des cas, ses mises à jour du noyau ou ses remplacements matériels obligent à redémarrer. (Ce qui ne dépend pas de moi de toute façon ...) - DMCTP: serait intéressé par la façon de le faire fonctionner sans recompiler l'écran (comme suggéré sur Internet).
fuenfundachtzig

1
J'utilise tmux au lieu de screen et je trouve plus facile d'écrire des scripts de session. Cela ne "sauvegarde" pas votre session mais vous pouvez facilement envoyer des commandes à tmux pour faire votre mise en page et envoyer des "touches" au client afin que vous puissiez changer de répertoire et lancer des applications si nécessaire. Je suis sûr que vous pouvez également le faire à l'écran, mais cela semble plus facile avec tmux

Réponses:


13

Il n'y a aucun moyen d'enregistrer une session d'écran de la manière que vous désirez. Ce que j'ai fait était la meilleure chose suivante: l'autossh scripté pour se connecter à mes serveurs et configurer ma plate-forme comme je l'aime.

Aimer.

Connexion locale en panne, j'attends, elle revient et il y a mon travail (j'utilise des écrans imbriqués). Serveur arrêté ou redémarré, j'attends et je suis de retour dans ma position par défaut. Cela me donne le sentiment de continuité que je désirais.

Quoi qu'il en soit, j'ai posé cette question exacte il y a des années sur la liste des écrans.

Résumé: Ne cherchez pas la vie éternelle pour l'écran. Au lieu de cela, apprenez à ressusciter.

C'est la viande de la configuration .screenrc:

Il y a un exemple, rscreen, dans le package autossh que j'ai modifié dans le programme econnect.

Le paramètre --esc consiste à définir l'échappement de l'écran distant sur quelque chose de différent (mon échappement est `)

#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

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

Sur Server Fault, la même question a reçu un indice qui manque ici: utiliser tmuxavec tmux-resurrect , qui est:

Restaurer [s] l' tmuxenvironnement après le redémarrage du système.

Ce qu'il peut vous restaurer:

  • toutes les sessions, fenêtres, volets et leur ordre
  • répertoire de travail actuel pour chaque volet
  • dispositions exactes des volets dans les fenêtres (même en zoomant)
  • session active et alternative
  • fenêtre active et alternative pour chaque session
  • fenêtres avec focus
  • volet actif pour chaque fenêtre
  • "sessions groupées" (fonctionnalité utile lors de l'utilisation de tmux avec plusieurs moniteurs)
  • programmes exécutés dans un volet! Plus de détails dans la documentation des programmes de restauration .
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.