Задать вопрос
@apaicer

Как переключить запись в файл через inode?

Добрый вечер!

Подскажите, пожалуйста, гипотетическая ситуация.

Условно есть веб сервер, который пишет стандартный лог access.log и так случилось, что этот файл забил все место на сервере.

Есть 2 пути, удалить например этот файл и ребутнуть веб-сервер, а можно создать такой же файл и перекинуть запись в него через inode.

Но я не нашел как именно это сделать с практической точки зрения или плохо гуглил.

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

Или достаточно того, что ln access.log new_access.lgo и rm access.log?
По сути inode у них будет совпадать, но выглядит это как-то...
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
paran0id
@paran0id Куратор тега Linux
Умный, но ленивый
Можно занулить содержимое файла.
Можно послать серверу SIGUSR1, если он умеет его обрабатывать, чтобы тот переоткрыл файлы.
Единожды "отрезолвив" имя файла (путь) в inode, сервер пишет в inode. Можно переименовать файл, а потом пнуть сервер SIGUSR1 или перезапустить.

На будущее - настройте logrotate.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Если просто обнулить файл, то обычный
echo "" > file
если нужно сохранить часть файла, то можно считать кусок из файла и записать в него же
tmp=$(tail -n 1000 file)
echo "$tmp" > file
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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