Как удалить содержимое файла 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.