Ich habe ein Programm, das unter Bildschirm läuft. Tatsächlich kann ich, wenn ich mich von der Sitzung trenne und netstat überprüfe, sehen, dass das Programm noch läuft (was ich will):
udp 0 0 127.0.0.1:1720 0.0.0.0:* 3759/ruby
Jetzt möchte ich mich wieder mit der Sitzung verbinden, die diesen Prozess ausführt. Also starte ich ein neues Terminal und tippe screen -r ein
$ screen -r
There are several suitable screens on:
5169.pts-2.teamviggy (05/31/2013 09:30:28 PM) (Detached)
4872.pts-2.teamviggy (05/31/2013 09:25:30 PM) (Detached)
4572.pts-2.teamviggy (05/31/2013 09:07:17 PM) (Detached)
4073.pts-2.teamviggy (05/31/2013 08:50:54 PM) (Detached)
3600.pts-2.teamviggy (05/31/2013 08:40:14 PM) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Aber woher weiß ich, in welcher Sitzung der von mir erstellte Prozess abläuft?
Nun sagte eines der Dokumente, auf die ich gestoßen bin:
"Wenn Sie ein Fenster verwenden, geben Sie Ca A ein, um ihm einen Namen zu geben. Dieser Name wird in der Fensterliste verwendet und hilft Ihnen dabei, sich zu erinnern, was Sie in jedem Fenster tun, wenn Sie viele Fenster verwenden. "
Wenn ich mich in einer neuen Bildschirmsitzung befinde, versuche ich, die Tastenkombination + A zu drücken, und es passiert nichts.
quelle
screen -r
folgt die Nummer 1, 2, 3 ... in dieser Liste der Bildschirme.Antworten:
Hierbei handelt es sich um zwei Ebenen von "Listings". Erstens haben Sie die "Fensterauflistung" innerhalb einer einzelnen Sitzung, für die Strg-A A steht, und zweitens gibt es eine "Sitzungsauflistung", mit der Sie Ihre Frage eingefügt haben und die auch angezeigt werden kann
screen -ls
.Sie können die Sitzungsnamen mit dem
-S
Parameter anpassen. Andernfalls wird Ihr Hostname (teamviggy) verwendet. Beispiel:(Strg-A d zum Trennen)
(Strg-A d zum Trennen)
Als Bonus können Sie eine eindeutige Abkürzung des Namens verwenden, an den Sie
-S
später weitergeben, um die Verbindung wiederherzustellen:(Ich bin wieder mit der
myprogramrunningunderscreen
Sitzung verbunden)quelle
ctrl-A a
undctrl-A shift-A
. Letzteres veranlasste mich dazuSet window's title to:
. Stellen Sie sicher, dass Sie die Umschalttaste für das zweite A drücken.-S
benennen, im Gegensatz zur automatischen Benennung mindestens eine eindeutige Abkürzung des Namens verwenden müssen, die der ID-Nummer und dem Punkt im vollständigen Namen der Bildschirmsitzung folgt, wenn Sie fortfahren generierte Sitzungsnamen, in denen Sie die ID und den Punkt einfügen können.Ich hatte einen Fall, in dem es nicht
screen -r
gelungen war, ihn wieder anzubringen. Hinzufügen der-d
Flagge so sah es so ausarbeitete für mich. Es löste den vorherigen Bildschirm und ermöglichte mir das erneute Anbringen. Weitere Informationen finden Sie auf der Man Page.
quelle
Eine einfache Möglichkeit besteht darin, einfach eine Verbindung zu einem beliebigen Bildschirm mit herzustellen
Sobald Sie screen ausgeführt haben, können Sie eine Liste aller aktiven Bildschirme anzeigen, indem Sie auf
Ctrl-A "
(dh Strg-A, gefolgt von einem doppelten Anführungszeichen) klicken. Dann können Sie einfach die aktiven Bildschirme einzeln auswählen und sehen, was sie gerade ausführen. Die Benennung der Bildschirme erleichtert natürlich die Identifizierung des richtigen.Nur meine zwei Cent
quelle
Ich benutze normalerweise die folgende Kombination, wenn ich auf mehreren Computern in mehreren Clustern arbeiten muss:
Dadurch wird eine neue Bildschirmsitzung erstellt, in der ich die Umgebung aufbauen kann.
Dies ist, was ich später benutze, um diese Bildschirmsitzung wieder zu verbinden. Die fünfzig Bits sind, dass, wenn die Sitzung an einer anderen Stelle angehängt wird, diese andere Anzeige getrennt wird. Darüber hinaus wird eine Sitzung erstellt, wenn es aus irgendeinem Grund keine Sitzung gibt, z. B. wenn jemand meinen Server ohne mein Wissen neu gestartet hat. Endlich. Wenn mehrere Sitzungen vorhanden sind, wird die erste verwendet.
Ein großes Lob an https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen-instructions für diesen Tipp vor einiger Zeit.
BEARBEITEN:
Auch hier einige nützliche Erklärungen
man screen
zu kryptischen ParameternEs gibt noch mehr mit
-D
, also achten Sie darauf, zu überprüfenman screen
quelle
Die Ausgabe von
screen -list
ist wie folgt formatiertpid.tty.host
. Die Pids können verwendet werden, um den ersten untergeordneten Prozess zu erhalten mitpstree
:Sie erhalten eine solche Liste
quelle
oder
quelle