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 -R
Flag für screen
istfastperfekt:
ssh host -t screen -R -S thesessionname
..aber wenn die Sitzung bereits verbunden ist, wird eine zweite Sitzung erstellt ( -R
einfach nach der ersten getrennten Sitzung suchen, wenn keine gefunden wird, wird eine neue erstellt)
Gibt es eine Möglichkeit, mit der -R
Flagge auch nach angehängten Sitzungen zu suchen und nur dann eine neue zu erstellen, wenn thesessionname
keine 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 -D
dies bei der Fall ist, und ich möchte auf keinen Fall den Multi-Attach-Modus von -x
.