Speichern Sie den vollständigen Sitzungsstatus des GNU-Bildschirms

32

Ist es möglich, den "Status" eines GNU-Bildschirmfensters (oder nur einer Standard-Shell) beizubehalten, so dass ich nach einem Neustart alles neu laden kann:

  • Die Anzahl der geöffneten Muscheln
  • Der Name jeder Shell
  • Das aktuelle Verzeichnis jeder Shell
  • Die Geschichte jeder Muschel
  • Wenn möglich, ihre Umgebungsvariablen
Barthelemy
quelle

Antworten:

19

Es ist nicht wirklich möglich, eine vollständige Bildschirmsitzung zu speichern.

Was Sie tun können, ist ein richtiges zu schaffen .screenrc System das nach dem Neustart des Systems einige Einstellungen vornimmt.

Hier sind einige Kommentare zu den Dingen, die Sie aufgelistet haben:

  • Die Anzahl der geöffneten Muscheln
  • Der Name jeder Shell
  • Das aktuelle Verzeichnis jeder Shell

Ich verwende so etwas in meinem .screenrc, um beim Start einige bestimmte Shells zu öffnen:

## set the default shell
shell                   zsh

# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]

Sie erhalten die Zeichenfolge zwischen '' als Fensternamen und dem Befehl, nachdem der Name in Ihrer Standardshell ausgeführt wurde. Fügen Sie ein beliebiges Skript ein, das Sie möchten, z. B. eine Änderung in einem bestimmten Verzeichnis, und öffnen Sie einige Protokolle.

  • Die Geschichte jeder Muschel

Haben Sie jemals darüber nachgedacht, den Verlauf der Muscheln in Ihren Sitzungen zu teilen? IMHO macht dies die Dinge viel einfacher. In ZSH ist es mit setopt SHARE_HISTORYin Ihrem erledigt.zshrc

  • Wenn möglich, ihre Umgebungsvariablen

Wenn Sie dies wirklich brauchen und keine Kompromisse eingehen möchten, können Sie sich ein Shell-Skript überlegen, das den aktuellen Status des Bildschirms ausliest, die Anzahl der Shells, Umgebungsvariablen usw. speichert und diese Informationen in ein Startskript schreibt von Ihrem angerufen .screenrc. Für mich wäre das nicht die Mühe wert, denn ich schätze eine saubere Umgebung nach einem Neustart, wenn ich die Standardfenster für den Bildschirm anpassen kann.

Echox
quelle
Vielen Dank für Ihre Anregungen. Ich habe einen Weg gefunden, meine Geschichte auf Bash zu teilen (nicht so einfach wie mit zsh), so dass ich einen Strom von Befehlen habe, der beibehalten wird. In Bezug auf die .screenrc hätte ich darüber nachdenken sollen. Leider scheint es, dass Sie nur bestimmte Skripte ausführen können (Befehle wie 'cd' funktionieren nicht), aber das sollte in Ordnung sein. Die Umgebungsvariablen stören mich nicht, wenn ich eine Shell mit einem Skript initialisieren kann.
Barthelemy
cd ist eine eingebaute Funktion Ihrer Shell, ein cd-Befehl würde außerhalb einer "Shell" keinen Sinn ergeben :-) Sie können aber einfach ein Skript einfügen, das nach dem shebang eine cd / foo / bar enthält. Dann wechselt Ihre neue Shell in dieses Verzeichnis.
Echox
Ja, ich verstehe diese Unterscheidung, ich dachte nur, dass die Befehle irgendwie an die Shell übergeben und dann in der Shell ausgeführt wurden. Aber ich habe kein Problem damit, Initialisierungsskripte zu schreiben :-) Der geteilte Verlauf war übrigens eine großartige Idee, die ich wirklich mag.
Barthelemy
10

Ich bin über ein Projekt namens Screen-Session gestolpert . Es ermöglicht Ihnen, GNU Screen-Sitzungen zu einem gewissen Grad zu speichern und neu zu laden.

BUGHUNTER
quelle
2

Es gibt ein Tool zum Einfrieren des Zustands eines Prozesses namens Cryopid . Derzeit funktioniert es jedoch nicht mit dem GNU-Bildschirm, da es nicht unterstützt, eine Hierarchie von Unterprozessen neu zu erstellen. Sie geben an, dass sie dies in Zukunft erreichen wollen, aber das Projekt scheint im Moment nicht zu aktiv zu sein. Trotzdem möchten Sie vielleicht ihren Fortschritt verfolgen.

fschmitt
quelle
0

Ich habe vor Jahren ein ähnliches Modell für Solaris gebaut. Nicht einmal bildschirmbezogen; es war sitzungsbezogen. msgstr "wenn $ TTY = was auch immer". echox hat die richtige idee.

tipp: Wenn Sie dies auf mehreren Rechnern durchführen, müssen Sie beachten, dass jeder Rechner eine eigene Definition dessen verdient, was bei der Anmeldung dort zu tun ist, anstatt dass alle Einstellungen für die von Ihnen gemounteten / zu hause oder ähnlich gemachten nfs identisch sind.

HTH, -pbr

pbr
quelle