Существует процесс apache, который регистрирует доступ и журнал ошибок. Два файла журнала были удалены, но процесс apache не был перезапущен или перезагружен, поэтому у него все еще есть открытые дескрипторы файлов для этих файлов журнала.
Я могу получить доступ к содержимому файла, прочитав дескриптор файла из каталога /proc
:
$ sudo lsof +p 30304
...
rotatelog 30304 root 4w REG 251,0 22480405 265346 /var/log/httpd/error_log-2014-09-11 (deleted)
Если я затем проверяю файловые дескрипторы для этого процесса, я вижу файл:
$ ls -l /proc/30304/fd
...
l-wx------ 1 root root 64 2014-09-11 10:18 4 -> /var/log/httpd/error_log-2014-09-11 (deleted)
Я также вижу индекс для этого файла:
$ ls -i /proc/30304/fd/4
1936760177 /proc/30304/fd/4
Я могу скопировать этот файл, чтобы получить текущий контент, но любые будущие сообщения журнала не будут отображаться в скопированном файле. Есть ли способ создать файл с таким номером инода?
Это похоже на использование ln
для создания жесткой ссылки на файл, но без ссылки на существующий файл.