Benannte Bildschirmsitzung erneut anhängen oder erstellen? (oder dauerhafte Bildschirmsitzungen)

Benannte Bildschirmsitzung erneut anhängen oder erstellen? (oder dauerhafte Bildschirmsitzungen)

Grundsätzlich habe ich eine Remote-Bildschirmsitzung, zu der ich automatisch eine neue Verbindung herstellen möchte. Derzeit mache ich das mit dem folgenden Befehl (als iTerm-Lesezeichen oder Alias):

ssh host -t screen -x thesessionname

Das funktioniert gut, aber wenn die Sitzung aus irgendeinem Grund beendet wird, möchte ich, dass sie bei der nächsten Verbindung neu gestartet wird. Das -RFlag für screenistfastperfekt:

ssh host -t screen -R -S thesessionname

..aber wenn die Sitzung bereits verbunden ist, wird eine zweite Sitzung erstellt ( -Reinfach nach der ersten getrennten Sitzung suchen, wenn keine gefunden wird, wird eine neue erstellt)

Gibt es eine Möglichkeit, mit der -RFlagge auch nach angehängten Sitzungen zu suchen und nur dann eine neue zu erstellen, wenn thesessionnamekeine vorhanden ist?

Wenn das nicht so einfach geht, wie könnte ich die Bildschirmsitzung automatisch neu erstellen, wenn sie beendet wird? Vielleicht ein über Cron ausgeführtes Skript, das nach der benannten Sitzung sucht und sie erstellt, falls sie nicht existiert?

Antwort1

Sagen Sie dem Bildschirm, dass er es etwas hartnäckiger versuchen soll:

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

Kombinieren Sie also beides und Sie sollten Ihre Lösung haben („-DR“ ist gleichbedeutend mit „-D -R“):

screen -DR <yoursession> 

Darüber hinaus und nützlich zu wissen: Sie können laufende Sitzungen mit folgenden Optionen anzeigen:

screen -ls

Antwort2

Ein paar gute Optionen. Zuerst mein Favorit:

screen -x -R

Dadurch wird die Verbindung zur ersten verfügbaren Bildschirmsitzung hergestellt (Freigabe, wenn eine andere Verbindung besteht) und wenn überhaupt keine Bildschirmsitzungen vorhanden sind, wird eine neue gestartet.

screen -d -RR

In den Dokumenten dazu heißt es: „Hängen Sie eine Sitzung erneut an und trennen oder erstellen Sie sie bei Bedarf. Verwenden Sie die erste Sitzung, wenn mehr als eine Sitzung verfügbar ist.“ Im Grunde sorgt das Doppel-R dafür, dass nach der ersten Sitzung gesucht wird, an die eine Verbindung hergestellt werden soll.

screen -D -RR

„Hier und jetzt anhängen. Was auch immer das bedeutet, tun Sie es einfach.“ Trennt alle anderen angehängten Sitzungen, meldet sie remote ab und hängt sich an die erste mögliche Sitzung an. Tut im Grunde alles, was nötig ist, um sich an eine vorhandene Sitzung anzuhängen, und erstellt eine neue, wenn dort nichts vorhanden ist.

Bei der allerersten Option (-x -R) ist es am wenigsten wahrscheinlich, dass Probleme auftreten (sie trennt Ihre andere Verbindung nicht), sie verbindet sich aber immer mit etwas, wenn es etwas zum Verbinden gibt, und erstellt etwas, wenn es nichts zum Verbinden gibt.

Antwort3

ich benutze

screen -dRRS sessname

Ich möchte nicht, dass meine gesamten Anmeldedaten auf der anderen Shell gelöscht werden, wie -Ddies bei der Fall ist, und ich möchte auf keinen Fall den Multi-Attach-Modus von -x.

verwandte Informationen