我在一个批处理系统上工作,该批处理系统运行时间极长,并产生大量产出。实际上,我不得不通过gzip传递标准输出,以防止批处理节点填充其工作区并随后崩溃。
longscript | gzip -9 > log.gz
现在,我想调查作业仍在运行时的输出。所以我这样做:
gunzip log.gz
由于它是大文件(几个GB),因此运行时间非常长。我可以看到输出文件在运行时正在创建,并且可以在生成文件时对其进行查看。
tail log
> some-line-of-the-log-file
tail log
> some-other-line-of-the-log-file
但是,最终,gzip遇到gzip压缩文件的结尾。由于作业仍在运行,并且gzip仍在写入文件,因此尚无适当的页脚,因此会发生以下情况:
gzip: log.gz: unexpected end of file
此后,提取的日志文件将被删除,因为gzip认为损坏的提取数据对我没有用。但是,我不同意-即使最后两行都乱码了,输出对我还是很有趣的。
如何说服gzip让我保留“损坏的”文件?
gunzip -c
将输出写入stdout ...也许这就是您想要的?它保持原始不变。