Tôi có một công việc trên một hệ thống hàng loạt chạy rất dài và tạo ra hàng tấn đầu ra. Thực tế là tôi phải chuyển đầu ra tiêu chuẩn thông qua gzip để giữ cho nút hàng loạt không lấp đầy vùng làm việc của nó và sau đó bị sập.
longscript | gzip -9 > log.gz
Bây giờ, tôi muốn điều tra đầu ra của công việc trong khi nó vẫn đang chạy. Vì vậy, tôi làm điều này:
gunzip log.gz
Điều này chạy rất lâu, vì nó là tệp rất lớn (vài GB). Tôi có thể thấy tệp đầu ra đang được tạo trong khi nó đang chạy và có thể xem nó trong khi nó đang được xây dựng.
tail log
> some-line-of-the-log-file
tail log
> some-other-line-of-the-log-file
Tuy nhiên, cuối cùng, gzip gặp phải phần cuối của tệp được nén. Vì công việc vẫn đang chạy và gzip vẫn đang ghi tệp, nên chưa có chân trang phù hợp, vì vậy điều này xảy ra:
gzip: log.gz: unexpected end of file
Sau này, tệp nhật ký trích xuất bị xóa, vì gzip nghĩ rằng dữ liệu trích xuất bị hỏng là không có ích với tôi. Tôi, tuy nhiên, không đồng ý - ngay cả khi một vài dòng cuối cùng được xáo trộn, đầu ra vẫn rất thú vị đối với tôi.
Làm cách nào tôi có thể thuyết phục gzip để cho tôi giữ tệp "bị hỏng"?
gunzip -c
ghi đầu ra vào thiết bị xuất chuẩn ... có thể đó là những gì bạn đang tìm kiếm? Nó giữ nguyên bản không thay đổi.