Как удалить содержимое файла error.log, но сохранить его без изменений


25

Я хочу стереть содержимое файла error.log (файл журнала ошибок nginx), но на самом деле я не хочу его удалять.

Это возможно?

работает убунту

Ответы:


68

Вы можете использовать это:

>error.log

(набирается просто так - пустое перенаправление вывода)

или

truncate -s0 error.log

@Ignacio: если файл уже существует, он будет обрезан. Если файл не существует, либо создаст его.
Приостановлено до дальнейшего уведомления.

Ты прав, мой плохой.
Игнасио Васкес-Абрамс

Последний вариант у меня сработал, по некоторым причинам sudo> error.log у меня не сработал (ubuntu 12.04)
davidkonrad

5
@davidkonrad: Вы должны уже иметь права root, чтобы перенаправление работало, поскольку оно выполнено до того, как sudoвступит в силу. Или вы можете сделатьsudo bash -c '>error.log'
Пауза до дальнейшего уведомления.

1
@ divHelper11: В своем ответе я говорю, что это «перенаправление пустого вывода». Это означает, что «ничто» не отправляется в указанный файл, и это перезаписывает любое существующее содержимое. Это похоже на, echo "some words" > output.txtно ничего не происходит.
Приостановлено до дальнейшего уведомления.

1

Вы перепутаете демона. Сотрите файл и отправьте SIGHUPна nginx.


SIGHUP? Не могу ли я закрыть nginx, очистить файл и начать? Я хочу знать, как стереть файл для знания также.
user27449

Если бы вы хотели, конечно. Но это нарушит обслуживание.
Игнасио Васкес-Абрамс

Я думаю, что как нулевое перенаправление, так и a truncateявляются атомарными, поэтому до тех пор, пока не происходит поиск (особенно если добавляется только выполняемая операция), это не должно быть разрушительным.
Приостановлено до дальнейшего уведомления.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.