Ho un lavoro su un sistema batch che funziona estremamente a lungo e produce tonnellate di output. Tanto effettivamente che devo reindirizzare l'output standard tramite gzip per evitare che il nodo batch riempia la sua area di lavoro e successivamente si blocchi.
longscript | gzip -9 > log.gz
Ora, vorrei esaminare l'output del lavoro mentre è ancora in esecuzione. Quindi faccio questo:
gunzip log.gz
Funziona molto a lungo, in quanto è un file enorme (diversi GB). Posso vedere il file di output creato mentre è in esecuzione e posso guardarlo mentre viene creato.
tail log
> some-line-of-the-log-file
tail log
> some-other-line-of-the-log-file
Tuttavia, alla fine, gzip rileva la fine del file gzipped. Poiché il lavoro è ancora in esecuzione e gzip sta ancora scrivendo il file, non esiste ancora un piè di pagina adeguato, quindi ciò accade:
gzip: log.gz: unexpected end of file
Successivamente, il file di registro estratto viene eliminato, poiché gzip ritiene che i dati estratti danneggiati non mi siano utili. Tuttavia, non sono d'accordo - anche se le ultime due righe sono confuse, l'output è ancora molto interessante per me.
Come posso convincere gzip a farmi conservare il file "corrotto"?
gunzip -c
scrive l'output su stdout ... forse è quello che stai cercando? Mantiene inalterato l'originale.