In unix, qual è il modo migliore per ridurre le dimensioni di un enorme file di registro su cui si sta scrivendo attivamente?


11

Su un server Linux, voglio ridurre la dimensione di un file di registro che è grande diversi GB. Tagliare la metà superiore, o forse il primo milione di linee funzionerebbe.

Risposte:


12

Questo emerge nelle interviste abbastanza spesso ...

Stai cercando di troncare il file senza interrompere i processi? Qualche informazione nel file di registro è preziosa? In tal caso, di solito "zero" il file con una semplice stringa bash.

: > /var/log/badlogfile

Ciò si verifica in situazioni in cui potresti avere un'applicazione che non può essere riavviata in modo controllato. Supponiamo che sia un'applicazione di trading finanziario e che il programma non possa essere arrestato o riavviato durante il giorno di trading. Tuttavia, i file di registro stanno crescendo a un ritmo osceno a causa di un bug dell'applicazione. Troncare i file di registro utilizzando il metodo sopra o sotto può mantenere il sistema in esecuzione.

Vedi anche: http://www.cyberciti.biz/faq/truncate-large-text-file-in-unix-linux/


1
si suppone che i due punti indichino un prompt o che effettivamente rientri nel comando?
Phil

I due punti fanno parte del comando.
ewwhite,

In realtà non hai bisogno dei due punti.
MikeyB,

È una no-op. Non è necessario, ma mi piace tenerlo lì quando faccio la raccomandazione.
ewwhite,

Questo non ha funzionato per me, il registro non è cambiato in dimensioni. Andò a 0, ma poi tornò alla sua grandezza originale
thouliha,

2

Potresti metterlo in logrotate, quindi non sfuggirà facilmente al controllo


Alla fine ciò deve accadere. Sono nuovo in questo lavoro ...
Phil

1

Se ti sta scrivendo attivamente, in realtà non hai molto che puoi fare troncando. Le uniche opzioni sono di svuotare il file (è possibile copiarlo altrove prima).

echo "" >/var/log/fileYouWantToEmpty

In questo modo il file finisce vuoto ma è sempre lo stesso file / inode in modo da non interrompere il programma che sta registrando.


0

Puoi anche provare cat / dev / null> / var / log /. Ma devo avvisare che / dev / null non è implementato in alcune delle versioni precedenti ...


troncare il file non funziona per me, ho fatto il test su centos 7 e su redhat 5
c4f4t0r
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.