2012-09-06 9 views
6

Mam plik dziennika na serwerze o nazwie writelog, który jest około 2GB.Jak usunąć zawartość pliku dziennika z terminalu linux?

Chcę usunąć pierwsze wiersze 100,000 z pliku. Mogłabym otworzyć plik i usunąć te linie, ale ze względu na rozmiar pliku trwa to na zawsze, aby go pobrać.

Czy można to zrobić z terminala systemu Linux? Jeśli tak, to w jaki sposób?

+1

możesz zobaczyć http://stackoverflow.com/questions/2112469/delete-specific-line-numbers-from-a-text-file-using-sed –

Odpowiedz

7

To może być lepiej trzymać ostatnie 1000 linie:

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

I należy włączyć logrotate (manual) dla pliku. System upewni się, że plik nie rośnie z proporcji.

13

Jeśli chcesz usunąć ten cały plik szybki sposób jest

cat /dev/null > writelog

Zobacz także this thread on unix.com.

+1

pojawi się błąd "Plik istnieje" – Bala

+1

@Bala That zależy od ustawień powłoki ... Lepszym sposobem na wykonanie tego jest: ':> | writelog', aby zastąpić opcję '-C' /' noclobber' ... w powłoce C, to jest: ':>! writelog' ... ':' jest wbudowanym "null command", które nic nie robi, nic nie daje i zawsze kończy 0. – Carpetsmoker

Powiązane problemy