Ich habe eine Reihe von Servern, auf denen ich Experimente durchführe screen
. Das Verfahren ist wie folgt:
ssh
zum Server XXX- starten
screen
- Starten Sie die Experimente in wenigen Registerkarten
- ablösen
screen
- Trennen Sie die Verbindung zum Server
Während die Experimente ausgeführt werden, kann ich leicht herausfinden, auf welchen Servern sie sich befinden, indem ich ssh
auf alle Server gehe und meine laufenden Prozesse aufführe (mit top
oder ps
).
Wie kann ich jedoch nach Abschluss der Experimente feststellen, auf welchen Servern eine Bildschirmsitzung geöffnet ist (damit ich mir die Ausgabe ansehen, sie neu starten usw. kann)?
PS: Meine Experimente drucken ihre Ausgabe auch in Dateien ... aber das ist nicht der Punkt meiner Frage.
quelle
ls -R /var/run/screen/S-root/ | grep "NamingConvention"
. Bildschirme werden im<pid>.<screen_name>
Format gespeichert. Dies ist nützlich für Bash-Skripte. Wenn Sie also einen Bildschirm mit Namen0000.NamingConvention
haben, wird der Name der gesuchten Bildschirme buchstäblich in einem einfach zu analysierenden Format zurückgegeben.Der Befehl Bildschirm -Liste kann sein , was Sie wollen.
Sehen Sie den Mann
quelle
Obwohl die Antwort von joshperry richtig ist, finde ich es sehr ärgerlich, dass sie Ihnen nicht den Bildschirmnamen sagt (den, den Sie mit der Option -t festgelegt haben), sondern den Sie tatsächlich verwenden, um eine Sitzung zu identifizieren. (natürlich nicht seine Schuld, das ist ein Fehler des Bildschirms)
Deshalb verwende ich stattdessen ein Skript wie das folgende:
ps auxw|grep -i screen|grep -v grep
quelle
ls
Ausgabe sichtbar . Bei Bedarf können Sie auch die Option -t beibehalten.screen -rd <sessionname>
Ich bin mir Ihrer Frage nicht wirklich sicher, aber wenn Sie nur eine Liste der aktuell geöffneten Bildschirmsitzungen wünschen, versuchen Sie Folgendes:
quelle
Wenn Sie den Bildschirm in der Konsole sehen möchten, müssen Sie einen Befehl schreiben
Wenn Sie auf den Bildschirm zugreifen müssen, müssen Sie den folgenden Befehl verwenden
Schreiben Sie
PWD
in die Befehlszeile, um zu überprüfen, in welchem Ordner Sie sich gerade befindenquelle
In den meisten Fällen a
screen -RRx $username/
Wille aus :)Wenn Sie dennoch alle Bildschirme auflisten möchten, fügen Sie das folgende Skript in Ihren Pfad ein und nennen Sie es Bildschirm oder wie auch immer Sie möchten:
Es verhält sich genau wie Bildschirm, außer dass alle Bildschirmsitzungen angezeigt werden, wenn die Option -ls-all als erster Parameter angegeben wird.
quelle
Mehrere Leute haben bereits darauf hingewiesen
würde die Bildschirmsitzungen auflisten.
Hier ist ein weiterer Trick, der für Sie nützlich sein kann.
Wenn Sie den folgenden Befehl als letzte Zeile in Ihre .bashrc- Datei auf Server xxx einfügen , wird beim Anmelden automatisch wieder eine Verbindung zu Ihrer Bildschirmsitzung hergestellt.
Ich hoffe, Sie finden es nützlich.
quelle
um zu sehen, welcher Bildschirm ausgeführt wird, falls Sie den Befehl verwendet haben
quelle
Sie verwenden also den Bildschirm, um die Experimente im Hintergrund laufen zu lassen, oder was? Wenn ja, warum nicht einfach im Hintergrund starten?
Und wenn Sie fragen, wie Sie eine Benachrichtigung über die von mir geleistete Arbeit erhalten, wie wäre es, wenn Sie das Experiment mit einem E-Mail-Befehl verknüpfen?
quelle