2012-09-06 10 views
6

Ho un file di registro sul server chiamato writelog che è circa 2GB.Come eliminare il contenuto di un file di registro dal terminale Linux?

Desidero eliminare le prime righe 100,000 dal file. Potrei aprire il file ed eliminare quelle linee, ma a causa delle dimensioni del file mi ci vuole per sempre per scaricarlo.

Quindi, è possibile farlo dal terminale Linux? Se sì come?

+1

è possibile vedere http://stackoverflow.com/questions/2112469/delete-specifico-line-numeri-da-un-testo-file-utilizzato-sunto –

risposta

3

Se si utilizza un server Linux, è possibile utilizzare ssh:

ssh [email protected] sed -i '1,100000d' /path/to/logfile 
7

Sarebbe meglio per mantenere gli ultimi 1000 linee:

mv writelog writelog.bak 
tail -1000 writelog.bak > writelog 

E si dovrebbe abilitare logrotate (manual) per il file. Il sistema si assicurerà quindi che il file non cresca di proporzioni.

13

Se si desidera cancellare l'intero file un modo rapido è

cat /dev/null > writelog

Vedi anche this thread on unix.com.

+1

si otterrà l'errore "File esiste" – Bala

+1

@Bala che dipende dalle impostazioni della shell ... Un modo migliore per farlo è: ':> | writelog' per sovrascrivere l'opzione '-C' /' noclobber' ... in C shell, questo è: ':>! writelog' ... Il ':' è il built-in "comando nullo", che non fa nulla, emette nulla e esce sempre 0. – Carpetsmoker

Problemi correlati