Ich bin neu mit GNU screen
, und ich benutze es hauptsächlich, weil ich nicht meine Arbeit verlieren will, wenn meine SSH-Verbindung unerwartet schließt, und auch, weil ich eine Protokolldatei jeder ausgegebenen Ausgabe behalten möchte mein Terminal (zumindest einige der letzten Tracks)
Bei SSH-Sachen denke ich, dass Ctrl + a d ablöst und screen -r
oder screen -r session_name
wieder an einige anfügt Sitzung lösen alle meine Probleme, jetzt versuche ich Logging zu verstehen.
Ich fand screenlog
und hardcopy
auf diesem Link , der im Grunde sagt:
Hardcopy Strg + a h Schreibt den aktuellen Anzeigeinhalt in die Datei
hardcopy.n
im Standardverzeichnis des Fensters, wobein
die Nummer des aktuellen Fensters ist. Dies hängt die Datei an oder überschreibt sie, wenn sie existiert, wie durch den Befehlhardcopy_append
festgelegt.log Strg + a H Beginnt / beendet die Protokollierung des aktuellen Fensters in die Datei
screenlog.n
im Standardverzeichnis des Fensters, wobei n die Nummer des aktuellen Fensters ist. Wenn kein Parameter angegeben ist, wird der Protokollierungsstatus umgeschaltet. Das Sitzungsprotokoll wird an den vorherigen Inhalt der Datei angehängt, wenn es bereits vorhanden ist. Der aktuelle Inhalt und der Inhalt des Scrollback-Verlaufs sind nicht im Sitzungsprotokoll enthalten. Der Standardwert istoff
.
Also, soweit ich das verstanden habe und versuche, sie zu verwenden, nachdem ich screenlog
aktiviert habe, protokolliert es alles, was ich schreibe, und alle Ausgaben von Terminal in dieser Datei (was mir zufälligerweise $HOME
geht) einschließlich dieser Zeichen, um die Farbe wie 3[1;31mm
zu ändern. Wenn ich cat screenlog.0
mache, stürzt es manchmal ab, wenn ich die Datei auf unbestimmte Zeit drucke, aber ok, ich kann sie mit einem Editor oder in einer anderen Sitzung öffnen ...
Wie für hardcopy
, verfolgt es anscheinend weder Befehle noch Farben von Ausgaben, und ich weiß nicht, ob es nur die wenigen Zeilen benötigt, die im Terminal sichtbar sind oder alles, was in dieser Sitzung passiert ist jemand klärt mich das auf?
Schließlich öffne ich screen
auf Terminator
anstelle des klassischen Terminals, und selbst wenn ich verschiedene screen
-Sitzungen in verschiedenen Fenstern von Terminator
öffne, gehen alle Protokolle zu screenlog.0
oder hardcopy.0
. Im Fall von screenlog
, tritt ein Konflikt mit einem anderen Prozess auf, der in anderen Sitzungen ausgegeben wird, oder überschreiben Sie ihn? Wie kann ich verschiedene screenlog.n
Dateien erstellen und sie in ein anderes Verzeichnis als $HOME
einfügen?
Zum Schluss, welches wird empfohlen? Entschuldigung für diese große Frage, aber ich versuche es so zu schreiben, dass es nützlich sein kann, Details zu diesen Logs zu klären, die ich an anderen Orten nur schwer finden kann. Fühl mich frei, mich zu korrigieren, wenn ich etwas falsch gesagt habe:)
hardcopy
speichert keine Zeichenattribute (Farben, Fett usw.), aber mit dem Argument '-h' wird auch der Inhalt des Scrollback-Puffers gespeichert.
Das Zielverzeichnis für Hardcopy-Dateien kann über hardcopydir
command; vorhandene Dateien werden nicht verschoben und diese Einstellung gilt für alle derzeit geöffneten und zukünftigen Fenster; Verzeichnis für Protokolldateien ist "Standardverzeichnis des Fensters" - dies kann mit chdir
command geändert werden; es gilt für das aktuelle Fenster und alle zukünftigen.
Das Protokolldateinamenmuster kann über den Befehl logfile
festgelegt werden. Alle Escape-Sequenzen von screen
sollten im Muster funktionieren. Beispiel: logfile screenlog.%Y%m%d.%S.%n
. Das Hardcopy-Dateinamensmuster ist jedoch fest codiert.
Tags und Links logging gnu-screen terminal