788просмотров
11.0%от подписчиков
3 декабря 2024 г.
Score: 867
👀 Один рубит - семеро в хуй трýбят! Попросил сегодня на собесе кандидата зачистить 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 и т.п. А какие способы обнуления знаешь ты? Про аклкашку не пишите, этот способ знают все. tags: #рабочиебудни #linux
—
🔔 ➡️