🛠️ Удалили большой log, а df -h почти не изменился?

Проверьте deleted open files.

Механика:

process открыл файл → получил FD → rm / unlink удалил pathname → process продолжает держать файл открытым → blocks остаются заняты

Поэтому возможна картина:

du → файл уже не видит df → filesystem всё ещё занят

Это не ошибка одной из команд.

du считает объекты в directory hierarchy.

df показывает использование blocks всего filesystem.

Для локальной filesystem проверьте:

lsof +L1

Она помогает найти open files с link count 0.

Для конкретного PID:

/proc//fd/

Там можно увидеть:

17 -> /var/log/app.log (deleted)

Это означает: pathname удалён, но process всё ещё держит descriptor.

Место окончательно освобождается, когда закрыт последний open descriptor и нет других hard links на файл.

Важно:

— не начинайте с kill -9; — не считайте restart единственным решением; — сначала проверьте, можно ли сделать корректный reopen/reload; — не трактуйте любое df ≠ du как доказательство deleted open file.

И отдельная оговорка: на NFS semantics отличаются, поэтому lsof +L1 нельзя механически интерпретировать так же, как на локальной filesystem.

Сохраните этот сценарий для случаев, когда rm не возвращает место на filesystem.

😄VK | 💬Макс | 🌐 Cайт 🔹🔹🔹🔹

🛠️ Удалили большой log, а df -h почти не изменился?
Проверьте deleted open files | Сетка — социальная сеть от hh.ru