Sobes.tech
Senior

Wohin schreibt der Prozess, wenn die Datei gelöscht wurde, aber der Descriptor geöffnet ist? Kann man den Inhalt ansehen?

sobes.tech KI

Antwort von AI

Если файл удалён из файловой системы, но процесс всё ещё держит открытый дескриптор на этот файл, то процесс продолжит писать данные в inode этого файла. Файл физически не отображается в каталоге, но данные сохраняются на диске, пока дескриптор открыт.

Это связано с тем, что в Unix-подобных системах удаление файла (unlink) удаляет ссылку на файл из каталога, но сам файл удаляется только тогда, когда количество ссылок и открытых дескрипторов становится нулём.

Чтобы посмотреть содержимое такого "удалённого" файла, можно:

  • Найти дескриптор процесса, который держит файл открытым, например, через /proc/<pid>/fd/.
  • Перейти в каталог /proc/<pid>/fd/ и посмотреть символическую ссылку на дескриптор, например /proc/<pid>/fd/3.
  • Считать содержимое через этот дескриптор, например, cat /proc/<pid>/fd/3.

Таким образом, даже если файл удалён из каталога, его содержимое доступно через открытый дескриптор до закрытия файла процессом.