Ich muss die gesamte Ausgabe von Screen in einer Datei speichern, um später den gesamten Inhalt zu überprüfen.
Der Grund dafür ist, dass ich einen Flash-Speicher über eine serielle Schnittstelle speichere und Screen als Schnittstelle verwende. Ich möchte es in einer Datei speichern, um die Speicherstruktur zu überprüfen.
Ich habe es versucht:
$: screen /dev/ttyUSB0 115200 >> foo.txt
$: screen /dev/ttyUSB0 115200 | tee foo.txt
Ich habe auch versucht, Bufferfile vom Bildschirm aus zu verwenden, aber ich verstehe nicht, wie ich es verwenden soll.
Gibt es einen einfachen Weg?
logging
buffer
dump
gnu-screen
Edoardoo
quelle
quelle
Antworten:
Es gibt eine Befehlszeilenoption für die Protokollierung. Die Ausgabe wird in der Datei screenlog.n gespeichert, wobei n eine Nummer des Bildschirms ist. Aus den Manpages des Bildschirms:
quelle
find / -name "screen*log"
dem nichts gefunden wurde.Sie können auch Control-a + H verwenden, um Protokollierungen in der Datei screenlog.n zu speichern. Noch ein Control-a + H zum Ausschalten.
Ca H: Beginnt / beendet die Protokollierung des aktuellen Fensters in der Datei "screenlog.n".
quelle
a
+:
und geben Sie beispielsweisechdir /home/foobar/baz
Die ausgewählte Antwort funktioniert bei mehreren Sitzungen nicht ganz gut und ermöglicht nicht die Angabe eines benutzerdefinierten Protokolldateinamens.
Für Sitzungen mit mehreren Bildschirmen ist dies meine Formel:
Erstellen Sie für jeden Prozess eine Konfigurationsdatei:
Wenn Sie dies "on the fly" tun möchten, können Sie es
logfile
automatisch ändern .\012
bedeutet "neue Zeile", da mit using\n
in der Protokolldatei: source gedruckt wird .Starten Sie Ihren Befehl mit den Flags "-c" und "-L":
Das ist es. Nach dem ersten Flush wird "test.log" angezeigt:
Ich habe festgestellt, dass "-L" auch dann noch erforderlich ist, wenn sich "Anmelden" in der Konfigurationsdatei befindet.
Ich konnte keine Liste der vom Bildschirm verwendeten Zeitformatvariablen (wie% m) finden. Wenn Sie einen Link zu diesen Formaten haben, posten Sie ihn bitte unten.
Extra
Wenn Sie dies "on the fly" tun möchten, können Sie dieses Skript verwenden:
Um es zu verwenden, speichern Sie es (screen.sh) und legen Sie + x Berechtigungen fest:
... und führt ./test.pl aus und erstellt eine Protokolldatei in /var/log/TEST.log
quelle
on-the-fly
Teil ist super nützlich.screen -r
mit"Unable to open "/tmp/log.conf"
. Außerdem wurde der Bildschirm von "[detached]
Status" in "Nicht vorhanden" geändert. Was könnte das Problem gewesen sein?screen bash
. Wenn ein anderer Prozess Ihren Bildschirm zerstört, sollte er als "tot" aufgeführt werden, aber nicht verschwinden. Ich bin mir nicht sicher, was es sein kann.Der folgende Befehl funktioniert für Bildschirmversion 4.06.02:
Von der Manpage von Screen :
Sie können die vorhandene Version von Screen mit screen -version überprüfen . Sie können die neueste Bildschirmversion von https://www.gnu.org/software/screen/ herunterladen und installieren .
quelle
Für das Mac-Terminal:
Einzelheiten
script
: Eine integrierte Anwendung zum "Erstellen eines Typoskripts für eine Terminalsitzung"-a
: An Ausgabedatei anhängen-t 0
: Die Zeit zwischen dem Schreiben in die Ausgabedatei beträgt 0 Sekunden, daher wird out.txt für jedes neue Zeichen aktualisiertout.txt
: Ist nur der Name der Ausgabedateiscreen /dev/ttyUSB0 115200
: Befehl von Frage zum Herstellen einer Verbindung mit einem externen GerätSie können dann tail verwenden, um zu sehen, dass die Datei aktualisiert wird.
quelle
Ctrl+Adann Shift+Harbeitet für mich. Sie können die Datei anzeigen,
screenlog.0
während das Programm noch ausgeführt wird.quelle
Der Befehl 'script' unter Unix sollte den Trick machen. Führen Sie es einfach am Anfang Ihrer neuen Konsole aus und Sie sollten gut sein.
quelle
Hier ist ein Trick: Wickeln Sie es ein
sh -c
!Wenn
2>&1
stderr nach stdout umgeleitet wird,tee
können Fehlermeldungen abgefangen und protokolliert werden.quelle
Folgendes könnte nützlich sein (getestet unter: Linux / Ubuntu 12.04 (Precise Pangolin)):
Mit den oben genannten Anweisungen können Sie dann alle erforderlichen Umleitungen vornehmen. Um beispielsweise die Ausgabe auf Ihrer Konsole zu speichern, während Sie sie in Ihrer Datei speichern, gehen Sie wie folgt vor:
quelle
Eine andere Antwort, wenn Sie die Ausgabe Ihres gesamten Scrollback-Puffers von einem bereits aktiv laufenden Bildschirm speichern müssen:
Dadurch wird Ihr gesamter Puffer in / tmp / screen-exchange gespeichert
quelle
Das vorhandene Bildschirmprotokoll kann gespeichert werden durch:
Ctrl+A : Hardcopy -h Dateiname
quelle