Jak usunąć zawartość pliku error.log, ale zachować ten plik nienaruszony

25

Chcę usunąć zawartość pliku error.log (plik dziennika błędów Nginx), ale tak naprawdę nie chcę usunąć pliku.

czy to możliwe?

działa Ubuntu

użytkownik27449
źródło

Odpowiedzi:

68

Możesz użyć tego:

>error.log

(tak wpisane - puste przekierowanie wyjściowe)

lub

truncate -s0 error.log
Wstrzymano do odwołania.
źródło
@Ignacio: Jeśli plik już istnieje, albo go obetnie. Jeśli plik nie istnieje, albo go utworzy.
Wstrzymano do odwołania.
Masz rację, mój zły.
Ignacio Vazquez-Abrams,
Ostatnia opcja działała dla mnie z jakiegoś powodu sudo> error.log nie działało dla mnie (ubuntu 12.04)
Davididkonrad
5
@davidkonrad: Musisz być już rootem, aby przekierowanie działało, ponieważ jest ono wykonywane, zanim zacznie sudodziałać. Lub możesz zrobićsudo bash -c '>error.log'
wstrzymano do odwołania.
1
@ divHelper11: W mojej odpowiedzi mówię, że jest to „przekierowanie pustego wyjścia”. Oznacza to, że do podanego pliku wysyłane jest „nic”, co zastępuje istniejącą zawartość. Jest podobny, echo "some words" > output.txtale nic się nie dzieje.
Wstrzymano do odwołania.
1

Zdezorientujesz demona. Usuń plik, a następnie wyślij SIGHUPdo nginx.

Ignacio Vazquez-Abrams
źródło
ZWIEDZANIE? Czy nie mogę zamknąć Nginx, wyczyścić plik, a następnie uruchomić? Chcę również wiedzieć, jak usunąć plik ze względu na wiedzę.
user27449,
Jeśli chcesz, na pewno. Ale to zakłóciłoby obsługę.
Ignacio Vazquez-Abrams,
Myślę, że zarówno zerowe przekierowanie, jak i przekrój truncatesą atomowe, więc dopóki wyszukiwanie nie jest prowadzone (zwłaszcza jeśli dołączana jest jedyna operacja), nie powinno to powodować zakłóceń.
Wstrzymano do odwołania.