Ich habe eine screen
Instanz ausgeführt, und ich müsste einen Code in der ausführen screen
und das Ergebnis in meinem Skript ausgeben.
Der erste Teil ist ganz einfach, ich nur screen -S session_name -X eval 'stuff "$cmd"\015'
.
(Ich habe eine Zeile geändert , die ich in einem Skript gefunden habe. )
Der zweite Teil, die Ausgabe herauszubekommen, ist schwieriger. Wie kann ich die gesamte Ausgabe erhalten, unabhängig von der Größe?
bash
logs
gnu-screen
recording
1ace
quelle
quelle
screen -X stuff …
; eine ähnliche Frage wie Sie .stuff
, was ich nur schwer verstehen konnte.Antworten:
Sie könnten
screen
mit der-L
Option beginnen. Dadurch wird auf dem Bildschirm eine Dateiscreenlog.n
im aktuellen Arbeitsverzeichnis erstellt (der n-Teil ist numerisch und beginnt mit einer Null).In Ihrem Fall würde dies ungefähr so aussehen:
screen -S session_name -L -X eval 'stuff "$cmd"\015'
Solange Sie daran denken, danach aufzuräumen, sollte dies mit dem übereinstimmen, wonach Sie suchen.
Für die letzte Zeile des Protokolls kann es leicht mit abgerufen werden
tail -1 screenlog.0
, oder das gesamte Protokoll kann analysiert werden, wie Sie es wünschen.quelle
screen
. Befehl gab ich war nur in den Befehl zum Senden der startenscreen
, habe ichscreen -dmS name program
;-)Eine weitere Nuance, die in Zukunft hilfreich sein kann: Wenn Sie sich in einer Bildschirmsitzung befinden, können Sie interaktiv nach der Erstellung der Protokolldatei fragen. Drücken Sie ctrl- a H(Strg-A, gefolgt von Großbuchstabe H), um den Bildschirm aufzufordern, das Fenster, in dem Sie sich befinden, in eine Protokolldatei zu kopieren.
quelle
man screen
ich muss CA H ohne das Steuerelement für den H. Sad eingeben, damit das vorherige Protokoll nicht erfasst wird.