Gibt es eine Möglichkeit, eine "Screen" -Sitzung nach dem Neustart zu erhalten?

25

Ich verwende das Dienstprogramm " Bildschirm" und möchte die Sitzung beim Neustart des Computers beibehalten. Wenn dies nicht möglich ist, können Sie andere Alternativen zu Screen empfehlen , mit denen die Sitzungen zwischen den Neustarts beibehalten werden können.

Wenn es darauf ankommt, verwende ich Ubuntu Server 10.04 (Lucid Lynx).

Ich habe mehrere Sitzungen über Bildschirm geöffnet. Wenn der Computer neu startet, gehen alle diese Sitzungen verloren und ich muss sie erneut öffnen. Ich wollte einen Weg finden, diese Screen-Sessions beizubehalten.

Sergey G
quelle
was versuchst du zu Möchten Sie den Verlauf oder alles, was in Ihrer Bildschirmsitzung läuft, beibehalten?
Marcel G
1
Würde dies nicht den Zweck eines Neustarts zunichte machen?
Brian Knoblauch
Was meinst du mit "Sitzungen"? Meinen Sie damit, dass Sie in mehreren Bildschirmfenstern SSH-Verbindungen zu anderen Hosts haben? Wenn es das ist, was Sie meinen, dann sollten Sie eine .screenrc-Datei schreiben und den Benutzer @ host angeben, auf den Sie sich einloggen möchten ..., wenn Sie SSH-Anmeldungen ohne Passwort aktiviert haben. Wenn Sie dann den Bildschirm starten, werden alle SSH-Verbindungen automatisch gestartet. Sie können es sogar von rc.local aus starten (etwas knifflig, da Sie es von su-yourusername aus starten müssen). Wenn Sie sich anmelden, können Sie die laufende Bildschirmsitzung erneut zuordnen.
Natxo Asenjo
1
was noch wichtiger ist, warum bootest du die ganze Zeit neu? Unix-Server sind keine Windows-Server, sie sind für hohe Betriebszeiten ausgelegt, und es ist bekannt, dass Maschinen eine Betriebszeit von mehreren Jahren haben (ohne Kernel-Sicherheitspatches). Wenn Sie aufgrund von Kernel-Sicherheitspatches neu starten, schauen Sie sich etwas wie ksplice an.
Der Unix-Hausmeister

Antworten:

16

Lassen Sie uns zunächst einige wichtige Dinge klären:

  1. Wie viele Maschinen sind betroffen? Mit anderen Worten, stellen Sie eine Verbindung zu einem Remotecomputer her, oder befindet sich alles auf Ihrem lokalen Computer?
  2. Wenn es sich um einen Remotecomputer handelt, wird dieser Computer neu gestartet: Ist es der Server oder der Client?

Wenn es sich um einen Rechner handelt oder der Server neu gestartet wird, haben Sie meistens Pech.

Wenn Sie sich bei einem Remotecomputer anmelden, Ihren lokalen Computer jedoch neu starten müssen, ist dies kein Problem, solange Sie den Bildschirm auf dem Remotecomputer anstelle Ihres lokalen Computers ausführen. Mir ist klar, dass dies für jeden erfahrenen (auch etwas erfahrenen) Benutzer des Bildschirms ziemlich offensichtlich ist, aber ich erwähne es nur für den Fall, dass es hilfreich sein könnte.

Eine weitere Möglichkeit (auch hier, ob dies für Sie hilfreich ist, hängt von Ihren Umständen ab) besteht darin, den Computer mit Bildschirm auf einer VM auszuführen. Angenommen, es handelt sich um einen physischen Remoteserver, der neu gestartet werden muss, aber ein Gastbetriebssystem auf (z. B.) VMware hat. Sie können das Gastbetriebssystem anhalten und nach dem Neustart der Hardware erneut starten. Es hängt alles davon ab, warum Sie einen Neustart durchführen müssen, was nicht angegeben wurde, und wie viel Kontrolle Sie über den Computer haben und ob Sie bereit sind, sich all diesen Problemen zu stellen.

Es gibt keine EASY-Lösung, und es ist möglich, dass keine der Lösungen für Sie funktioniert. Aber viel Glück.

Wenn Sie sich bei vielen Computern anmelden, ist es möglicherweise zu schmerzhaft, den Bildschirm auf allen Remotecomputern separat auszuführen, und das ist auch der Fall. In diesem Fall ist es nützlich, einen Zwischencomputer zu haben, auf dem ein Bildschirm ausgeführt wird, der viele Bildschirmfenster haben kann, die jeweils auf einem anderen Remote-Computer angemeldet sind. Solange der Zwischencomputer in Betrieb ist, können Sie Ihren eigenen lokalen Computer neu starten (oder in Ihre Tasche packen und für die Nacht mit nach Hause nehmen oder was auch immer), und der Bildschirm läuft auf dem Zwischencomputer weiter. (Und wenn einer der Remotecomputer ausfällt, wird die Verbindung zu diesem Computer zwar unterbrochen, die restlichen Bildschirmsitzungen sind jedoch in Ordnung.)

In den meisten Fällen beziehen Sie sich jedoch entweder auf den Remotecomputer oder auf den einzigen Computer, der neu gestartet wird. In diesem Fall gibt es keine einfache Möglichkeit, dies zu tun. CryoPID klingt zunächst vielversprechend, auf seiner Website wird jedoch angegeben, dass es für den Bildschirm nicht funktioniert.

Aber es gibt noch eine andere vielversprechende Option, die es wert ist, untersucht zu werden. (Ob es für Sie funktioniert, hängt weitgehend davon ab, was Sie genau tun möchten.) Überprüfen Sie dies auf github.com: https://github.com/skoneka/screen-session/tree/master/ScreenSession/

Bilderstürmer
quelle
+1 für cryoPID, wusste nichts davon!
Der Unix-Hausmeister
ScreenSession sieht interessant aus, aus der Beschreibung ist dies genau das, was ich wollte
Sergey G
5

In einigen seltenen Fällen ist dies möglich (siehe CryoPID oder CryoPID2 ), im Allgemeinen ist dies jedoch schwierig und kann daher nicht durchgeführt werden.

pjz
quelle
Die Verbindung ist unterbrochen.
Kasperd
4

Verwenden Sie statt des Bildschirms eine kleine Virtualbox-VM und arbeiten Sie darin. Anschließend können Sie den Ruhezustand aktivieren, den Host neu starten und die VM anschließend wieder aktivieren (genau wie beim Schließen und erneuten Öffnen des Deckels eines Laptops). SSH-Verbindungen zu Remote-Hosts werden durch diese Methode wahrscheinlich nicht bestehen bleiben. Ich glaube nicht, dass dies garantiert werden kann.

Gaius
quelle
Eigentlich möchte ich meine Antwort auf tmux-resurrect
Gaius
tmux-resurrect sieht nach einer sehr guten Lösung aus.
serv-inc,
4

Du kannst nicht. Sicher nicht auf der gleichen Maschine

Crankyadmin
quelle
Was bedeutet "Nein kann" ?
Peter Mortensen
1

Bei alledem ist Screen selbst ziemlich marginal. Es ist nicht der Bildschirm, den Sie "speichern" möchten, oder ?, sondern die Umgebung in den verschiedenen Bildschirmsitzungen, unabhängig davon, um welche es sich handelt.

Sie scheinen vorzuschlagen, dass das Speichern einer Screen-Sitzung einen darin enthaltenen SSH-Prozess und alle möglichen Arten von Vorgängen abdecken würde. Was in Screen läuft, geht Screen überhaupt nichts an, und das sind Dinge, die schwer zu "retten" sind ... was auch immer das wirklich bedeuten würde, wenn sie implementiert werden könnten.

Chris Phillips
quelle