Ich habe einen Job in einem Batch-System, das extrem lange läuft und Tonnen von Output produziert. Eigentlich so viel, dass ich die Standardausgabe durch gzip leiten muss, um zu verhindern, dass der Batch-Knoten seinen Arbeitsbereich füllt und anschließend abstürzt.
longscript | gzip -9 > log.gz
Jetzt möchte ich die Ausgabe des Jobs untersuchen, während er noch ausgeführt wird. Also mache ich das:
gunzip log.gz
Dies läuft sehr lange, da es sich um eine riesige Datei handelt (mehrere GB). Ich kann sehen, dass die Ausgabedatei während der Ausführung erstellt wird, und sie während der Erstellung anzeigen.
tail log
> some-line-of-the-log-file
tail log
> some-other-line-of-the-log-file
Letztendlich stößt gzip jedoch auf das Ende der komprimierten Datei. Da der Job noch ausgeführt wird und gzip die Datei noch schreibt, gibt es noch keine richtige Fußzeile. Dies geschieht also:
gzip: log.gz: unexpected end of file
Danach wird die extrahierte Protokolldatei gelöscht, da gzip der Meinung ist, dass die beschädigten extrahierten Daten für mich keinen Nutzen haben. Ich bin jedoch anderer Meinung - auch wenn die letzten Zeilen verschlüsselt sind, ist die Ausgabe für mich immer noch sehr interessant.
Wie kann ich gzip davon überzeugen, dass ich die "beschädigte" Datei behalten kann?
gunzip -c
schreibt die Ausgabe an stdout ... vielleicht ist es das, wonach Sie suchen? Das Original bleibt unverändert.