Lassen Sie den Remote-Befehl laufen und speichern Sie die Ausgabe

Lassen Sie den Remote-Befehl laufen und speichern Sie die Ausgabe

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, screenalle 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 screenist 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 tailauf 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, screenkönnen Sie es jederzeit verwenden nohupund 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 , ESCum den Scrollback-/Kopiermodus zu verlassen.

Standardmäßig speichert Screen nur 100 Zeilen. Setzen Sie eindefscrollbackAnweisung in Ihrem, .screenrcdiese 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 teemit dem Namen Ihres Protokolls als Parameter weiter.

verwandte Informationen