Як видалити вміст файлу error.log, але зберегти файл недоторканим


25

Я хочу стерти вміст файлу error.log (файл журналу помилок nginx), але я не хочу фактично видаляти файл.

це можливо?

працює ubuntu

Відповіді:


68

Ви можете скористатися цим:

>error.log

(введено просто так - перенаправлення порожнього виходу)

або

truncate -s0 error.log

@Ignacio: Якщо файл вже існує, будь-який його буде усічений. Якщо файл не існує, його буде створено.
Призупинено до подальшого повідомлення.

Ти маєш рацію, моя погана.
Ігнасіо Васкес-Абрамс

Останній варіант працював для мене, чомусь sudo> error.log не працював для мене (ubuntu 12.04)
davidkonrad

5
@davidkonrad: Ви повинні мати корінь, щоб перенаправлення працювало, оскільки воно виконується до того, як він набере sudoчинності. Або можете зробитиsudo bash -c '>error.log'
Призупинено до подальшого повідомлення.

1
@ divHelper11: У своїй відповіді я кажу, що це "порожнє перенаправлення виводу". Це означає, що "нічого" не надсилається до названого файлу, що перезаписує будь-який існуючий вміст. Це схоже, echo "some words" > output.txtале нічого не йде.
Призупинено до подальшого повідомлення.

1

Ви заплутаєте демона. Стерти файл, після чого надіслати SIGHUPnginx.


ЗАРАЗ? Не можу я вимкнути nginx, очистити файл, а потім запустити? Я хочу знати, як стерти файл і заради знань.
user27449

Якщо ви хотіли, звичайно. Але це порушило б службу.
Ігнасіо Васкес-Абрамс

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