В Linux процесс работает не с именем файла, а с открытым файловым дескриптором. Пока дескриптор остаётся открытым, удаление имени файла никак не влияет на возможность чтения данных.
Откройте файл через отдельный файловый дескриптор:
$ exec 3< huge.log
Теперь удалите файл обычной командой:
$ rm huge.log
Файл исчезнет из каталога и больше не будет доступен по имени.
Но дескриптор останется открытым:
$ cat <&3
Содержимое файла продолжит читаться, хотя самого файла в файловой системе уже нет.
Поэтому иногда после удаления большого журнала свободное место на диске не появляется. Процесс продолжает удерживать открытый дескриптор, а ядро освобождает место только после его закрытия.
🔥 Понимание того, как работают файловые дескрипторы, помогает быстрее находить причины пропавшего места на диске и разбираться с поведением сервисов.
🚪 Linux Ready | #совет
