🛠️ Удалили большой 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.