Поняття про рішення оболонки не маю, але (припустимо, що Linux 1
) inotify
може бути шляхом ... див. Цей приклад, що імітуєtail -F
(використовуючи pyinotify
), можливо, він може бути використаний як основа для перегляду всього каталогу .
Взагалі, inotify
можна контролювати каталоги (цитуючи man 7 inotify
)
Наступні біти можуть бути вказані в масці під час виклику inotify_add_watch (2) і можуть бути повернуті в поле маски, повернене читанням (2):
IN_ACCESS File was accessed (read) (*).
IN_ATTRIB Metadata changed, e.g., permissions, timestamps,
extended attributes, link count (since Linux 2.6.25),
UID, GID, etc. (*).
IN_CLOSE_WRITE File opened for writing was closed (*).
IN_CLOSE_NOWRITE File not opened for writing was closed (*).
IN_CREATE File/directory created in watched directory (*).
IN_DELETE File/directory deleted from watched directory (*).
IN_DELETE_SELF Watched file/directory was itself deleted.
IN_MODIFY File was modified (*).
IN_MOVE_SELF Watched file/directory was itself moved.
IN_MOVED_FROM File moved out of watched directory (*).
IN_MOVED_TO File moved into watched directory (*).
IN_OPEN File was opened (*).
Під час моніторингу каталогу , події, позначені зірочкою (*) вище, можуть відбуватися для файлів у каталозі; у цьому випадку поле імені у поверненій структурі inotify_event ідентифікує ім’я файлу в каталозі.
(... і pyinotify
уважно слідує варіантам тези)
1
: BSDs є щось подібне, kqueue
. Можливо, рішення для платформи можливо досягти, використовуючи GIO (зв'язки Python ) як шар абстракції, оскільки він, крім того inotify
, може також використовуватиkqueue