как обнаружить изменение или удаление файла в системе Linux

#linux #shell #filesystems #boost-filesystem

#linux #оболочка #файловые системы #boost-файловая система

Вопрос:

В системе UNIX все является файлом; если что-то не является файлом, это процесс. это преимущество файловой системы Linux, но у меня здесь вопрос!!

как я могу определить, был ли файл создан, изменен или удален пользователем или программой?

Я пытаюсь сделать это с помощью inotify, но не работает с версией ядра 3.4 в дистрибутиве openwrt

Спасибо

Ответ №1:

Вы пробовали использовать команду stat? Если вы не можете использовать inotify, то вы, вероятно, не сможете использовать inotifywait, поскольку он использует интерфейс inotify.

Вы можете получить информацию о создании и модификации файла непосредственно из его выходных данных.

Удаленная часть (когда пользователь или программа удаляет файл) не может быть доступна напрямую. Unix предоставляет временные метки atime, mtime и ctime.

Atime — это время последнего доступа к содержимому. Ctime — это время последней модификации метаданных inode. Mtime — это время последнего изменения содержимого.

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

Комментарии:

1. она может обнаруживать изменение файла в режиме реального времени? это означает, что если файл изменен, он отправляет сигнал скриптам, чтобы уведомить его об изменении?

2. @Anis_Stack простого способа получать уведомления не существует. Я думаю, вы можете написать несколько сценариев, которые будут выполнять команду stat, и использовать некоторые reg exps для захвата измененного времени