>_ IzzyLab

Практическое задание

Освободи место, обрезав лог

средне

Логи забили диск: /var/log/app.log распух до 20 MiB, и его продолжает писать работающий сервис. Удалять файл нельзя — сервис держит его открытым и будет писать в «удалённый» inode, место не освободится. Обнули файл на месте, сохранив сам файл.

Что потренируешь:
  • truncate
  • обрезка на месте
  • открытый дескриптор
  • освобождение места
  • inode

Разбор темы

В Unix «удалить файл» и «освободить место» — не одно и то же. Пока живой процесс держит файл открытым, его inode и блоки живут даже после rm: имя из каталога исчезнет, но процесс продолжит писать в уже «удалённый» файл, и место не вернётся до его завершения. Поэтому активный лог не удаляют, а обрезают на месте — усекают длину до нуля, сохраняя сам файл, его inode и открытый дескриптор. Блоки освобождаются сразу, а сервис как писал в тот же файл, так и пишет дальше, только уже с начала.

Что проверяется

  1. файл на месте (не удалён)
  2. лог обнулён

Как это выглядит