
Szenario;
Ich habe per SSH eine Verbindung zu einem Computer hergestellt, eine neue Bildschirmsitzung geöffnet und ein Skript gestartet.
Einige Tage später stelle ich per SSH eine Verbindung zu diesem Computer her, stelle die Bildschirmsitzung erneut her und schaue mir die generierte Ausgabe an. Allerdings kann ich nicht durch die Ausgabe zurückblättern.
Soweit ich es sehe, speichert screen die Standardausgabe eines „Bildschirms“. Wenn mein Skript in 48 Stunden 100 Zeilen Ausgabe generiert hat, kann ich nicht alles sehen, nur die letzten 40 Zeilen oder so. Gibt es eine Möglichkeit, screen
alle Standardausgaben des Skripts, das ich laufen lasse, zu speichern, sodass ich den Bildschirm erneut anschließen und mit Bild-auf/Bild-ab durch ihn blättern kann, als wäre es ein Skript, das auf meinem lokalen Computer läuft?
Vielleicht screen
ist das nicht die optimale Vorgehensweise? Gibt es eine bessere Methode, um Skripte nach dem Abmelden auf Remotecomputern weiterlaufen zu lassen und zu einem späteren Zeitpunkt erneut eine Verbindung zu diesem Prozess herzustellen und die gesamte Ausgabe anzuzeigen?
Antwort1
Sie können die Ausgabe einfach in einer Datei speichern
my_command > mylogfile
Wenn Sie sehen möchten, was während der Ausführung des Befehls geschieht, können Sie Folgendes tail
auf einem zweiten Bildschirm verwenden:
tail -f mylogfile
Sie können nicht nur die gesamte Ausgabe sehen, sondern auch verarbeiten (vergleichen, suchen, ...).
BearbeitenWenn Sie es nicht verwenden möchten, screen
können Sie es jederzeit verwenden nohup
und die Sitzung schließen
nohup my_command > mylogfile &
Antwort2
Sie können die Ausgabeprotokollierung auch mit dem Parameter -L beim Starten Ihres Bildschirms aktivieren, und zwar über:
screen -L -S <screen_name>
Dadurch wird eine Protokolldatei mit dem Namen screenlog.0 in dem Verzeichnis erstellt, in dem Sie den Bildschirm mit dem obigen Befehl gestartet haben.
Um screenlog.0 anzuzeigen, verwenden Sie cat (nicht vi).SO-Referenz.
cat screenlog.0
Antwort3
Screen führt ein Protokoll der vergangenen Ausgabezeilen. In der Screen-Dokumentation wird es als „Scrollback-History-Buffer“ bezeichnet.
Um durch den Scrollback zu navigieren, drücken Sie C-a ESC
(copy
). Sie können die Pfeiltasten und PgUp/ PgDnzum Navigieren verwenden, sowieandere Schlüsselzum Suchen und Kopieren von Text. Drücken Sie , ESC
um den Scrollback-/Kopiermodus zu verlassen.
Standardmäßig speichert Screen nur 100 Zeilen. Setzen Sie eindefscrollback
Anweisung in Ihrem, .screenrc
diese Zahl zu ändern.
Wenn Sie ein vollständiges Protokoll Ihres Skripts wünschen, speichern Sie es in einer Datei. Führen Sie es in Screen aus, um eine Verbindung zur übergeordneten Shell herzustellen und einfach zu sehen, ob das Skript noch läuft, es anzuhalten und neu zu starten usw. Oder forken Sie es abmitnohup
. Um die Protokolldatei während ihres Wachstums zu überwachen, verwenden Sie tail -f
.
Antwort4
Wenn Sie die Ausgabe sowohl auf dem Bildschirm sehen als auch protokollieren möchten, leiten Sie sie einfach tee
mit dem Namen Ihres Protokolls als Parameter weiter.