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

37422
user27449

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

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

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

21

2 ответа на вопрос

60
Dennis Williamson

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

>error.log 

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

или же

truncate -s0 error.log 
@Ignacio: если файл уже существует, он будет обрезан. Если файл не существует, либо создаст его. Dennis Williamson 13 лет назад 0
Ты прав, мой плохой. Ignacio Vazquez-Abrams 13 лет назад 0
Последний вариант работал для меня, по некоторым причинам sudo> error.log не работал для меня (Ubuntu 12.04) davidkonrad 9 лет назад 0
@davidkonrad: Вы должны уже иметь права root, чтобы перенаправление работало, поскольку оно выполнено до того, как sudo вступит в силу. Или вы можете сделать `sudo bash -c '> error.log'` Dennis Williamson 9 лет назад 4
ОК, не знал этого. Спасибо за разъяснения! davidkonrad 9 лет назад 0
Первый сработал у меня отлично! Хотя я не понимаю, что он делает: D Спасибо divHelper11 5 лет назад 0
@ divHelper11: В своем ответе я говорю, что это «перенаправление пустого вывода». Это означает, что «ничто» не отправляется в указанный файл, и это перезаписывает любое существующее содержимое. Это похоже на `echo" некоторые слова "> output.txt`, но ничего не происходит. Dennis Williamson 5 лет назад 1
1
Ignacio Vazquez-Abrams

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

SIGHUP? Не могу ли я закрыть nginx, очистить файл и начать? Я хочу знать, как стереть файл для знания также. user27449 13 лет назад 0
Если хочешь, конечно. Но это нарушит обслуживание. Ignacio Vazquez-Abrams 13 лет назад 0
Я думаю, что как нулевое перенаправление, так и «усечение» являются атомарными, поэтому до тех пор, пока не выполняется поиск (особенно если добавляется только выполняемая операция), это не должно быть разрушительным. Dennis Williamson 13 лет назад 0

Похожие вопросы