3 способа как зачищать логи в Linux

Как правильно зачистить лог файлы в Linux у работающих сервисов, чтобы ничего не сломать. Несколько способов о которых ты скорее всего не знал.


👀 Один рубит — семеро в хуй трýбят!

Попросил сегодня на собесе кандидата зачистить nginx логи. Кандидат на роль девопс (мидл) на вилку 200-250к.

Зачистилrm /var/log/nginx/access.log

Мде блядь… это будет интересно!

Задаю следующий вопрос — Серёжа, а почему файл access.log пропал и больше не появляется? Nginx то в данный момент работает, запросы на него идут.

Где карта Билли? Нам нужна карта!


Внятного ответа не получил, что-то на уровне — он появится спустя сутки, когда logrotate отработает. Дада… будем сутки без логов сидеть. А если нет logrotate?

Короче, если хочешь зачистить файл, есть несколько безопасных способов.

Первый способ:

sudo > /var/log/nginx/access.log


Тут мы перезаписываем лог-файл с помощью оператора редиректа «>».

Это безопасно для процесса, который продолжает записывать в лог, поскольку процесс будет продолжать писать в тот же файл, а его дескриптор не изменится.

Ключевая фраза — дескриптор не изменится. А когда ты этот файл через rm ёбнул само собой дескриптор потерялся и nginx охуевает.

Второй способ:

sudo truncate -s 0 /var/log/nginx/access.log


-s 0 = обрезать файл до нулевого размера. В этом случае дескриптор также не будет потерян и nginx продолжит писать непотребности.

Третий способ:

Некоторые сервисы, например, apache или nginx, позволяют отправить сигнал процессу для того, чтобы он закрыл текущий лог-файл и открыл новый (сигнал USR1). В этом случае процесс продолжит работать, но логи будут записываться в новый файл.

sudo kill -USR1 <pid>


Где pid = PID процесса. После выполнения этой команды файл с логов превратится в access.log.1 и откроется новый access.log.

Четвертый вариант — тот самый logrotate, но его рассматривать не будем.

Я пользуюсь первым вариантом с символом перенаправления «>». Стильно, модно, молодежно!

Короче сначала думаем головой, а потом уже пользуемся тяжелой артиллерией вроде rm и т.п.

А какие способы обнуления знаешь ты? Пиши в комменты. Про алкашку не пишите, этот способ знают все.

Комментарии