lsof +L1: почему удалённый файл продолжает занимать место Бывает, что… — Admin Guides | Сисадмин — TG.ME

lsof +L1: почему удалённый файл продолжает занимать место

Бывает, что файл уже удалили, а df продолжает показывать занятое место

Причина в том, что процесс всё ещё держит файл открытым

Находим такие файлы

lsof +L1


Например:

java  4217  app  12w  REG  8,1  21474836480  /var/log/app.log (deleted)

Файл больше не виден в каталоге, но его inode и блоки всё ещё принадлежат процессу java

Почему rm не освобождает место

При удалении файл сначала теряет имя в файловой системе

Но данные остаются доступны через уже открытый файловый дескриптор

Условно:

/var/log/app.log
↓ rm
inode ─────→ процесс

Пока процесс не закроет FD, ядро не сможет освободить занятые блоки

Можно увидеть сам дескриптор

ls -l /proc/4217/fd/12

Получим:

/var/log/app.log (deleted)


А иногда нужно срочно освободить место, но перезапускать процесс нельзя

Тогда содержимое открытого файла можно обнулить через /proc
: > /proc/4217/fd/12

Размер файла станет нулевым, при этом процесс продолжит использовать тот же FD

⚡️ Поэтому ситуация df показывает занято, а du не находит часто объясняется именно deleted-open файлами
du уже не видит файл в каталоге, а ядро продолжает учитывать его блоки до закрытия последнего дескриптора
❤2👍1
August 31, 2026 992 44