Проблема: Файл удалён из файловой системы, но процесс продолжает удерживать файловый дескриптор (fd). Дисковое пространство не освобождено, данные доступны через дескриптор.

Причины:
- Процесс открыл файл до его удаления (unlink).
- Ядро не освобождает inode, пока все fd не закрыты (жёсткая ссылка удалена, но inode жив).
- Типично для логов, временных файлов, кешей приложений.

Решение:

1. Обнаружение процесса и дескриптора
Linux:
bash
lsof +L1 /путь/или/директория   # показывает удалённые файлы
ls -la /proc//fd/ 2>/dev/null | grep deleted
fuser /путь/к/удалённому_файлу # если путь ещё известен

Windows (Sysinternals):
cmd
handle.exe -a | findstr "Deleted"
Process Explorer → поиск по `Deleted` в колонке Handle Description


2. Извлечение данных (восстановление)
Linux:
bash
cp /proc//fd/ /tmp/recovered_file

Windows: в Process Explorer → свойства дескриптора → «Save as…» (если файл открыт для чтения).
Примечание: если дескриптор открыт только на запись, данные нечитаемы – нужно сначала дочитать остатки через другой процесс.

3. Освобождение места на диске
- Приоритетный метод: завершить процесс, если он не критичен:
bash
kill -9    # или более мягкий SIGTERM

- Без завершения (опасно): принудительно закрыть дескриптор через `gdb`:
bash
gdb -p  -batch -ex "call close()" -ex "quit"

Риск: процесс может упасть при попытке дальнейшей работы с fd.
- Альтернатива: переназначить fd на `/dev/null` (аналогично, через gdb/ручное инжектирование).

4. Профилактика
- Настройка `logrotate` с `copytruncate` (копирование+усечение вместо удаления).
- Использование временных файлов с `unlink` после открытия (когда удаление происходит сразу после создания fd).
- Контроль через `lsof +L1` в мониторинге.

Все действия легальны при наличии соответствующих прав на систему и не нарушают законодательство РФ (используются штатные средства диагностики и администрирования).