Ответ 1
Вы должны использовать библиотеку вместо inotify
и друзей - что-то вроде FAM
или Gamin
(это тот же API для обоих). Это сделает вашу программу переносимой для других Unix.
Я смотрю на создание утилиты синхронизации файловой системы, которая отслеживает активность файловой системы, но похоже, что некоторые функции мониторинга файловой системы в ядре Linux устарели или не полностью представлены.
Какие мои исследования найдены
dnotify пришел первым с уведомлением, имеет функции уведомления для удаления, изменения, доступа, атрибутов, создания, перемещения, может определять дескриптор файла, однако теперь устарел от inotify и fanotify
inotify вышел на второй момент с уведомлением, имеет функции уведомления доступа, изменения, атрибута, закрытия, перемещения, удаления, создания и т.д. Однако он не дает вам файловый дескриптор или процесс и будет устаревшим с помощью fanotify
fanotify является последним, который информирует о доступе, изменении, закрытии, но не сообщает об удалении или атрибутах, но предоставляет файловый дескриптор
Мне нужен способ определения процесса (например, из fd) и таких вещей, как удаление, изменение, атрибуты и т.д., чтобы синхронизировать все, любые предложения? К сожалению, dnotify кажется лучшим, но наиболее устаревшим
Вы должны использовать библиотеку вместо inotify
и друзей - что-то вроде FAM
или Gamin
(это тот же API для обоих). Это сделает вашу программу переносимой для других Unix.
Там есть хороший lib, содержащий файловые дескрипторы или процесс с inotify. У него есть собственный API C и утилита inotifywatch (хорошо для скриптов), все в пакете inotify-tools.
Я категорически не согласен с тем, что fanotify будет устаревать inotify.
FAM и gamin - очень хорошие параметры сервера/клиента. Оба они используют inotify как первый вариант для устаревших dnotify и опросов. Я предпочитаю gamin.
incron - полезный инструмент для таких операций. Вы можете создать файл конфигурации для каталога или файла, который вы хотите просмотреть.
http://inotify.aiken.cz/?section=incron&page=about&lang=en
в ubuntu
sudo apt-get install incron
/etc/incron.d/mynotification.conf
# notification for user creation
/home IN_ALL_EVENTS /opt/notify_user_created.sh $#