Никакая идея о решении для оболочки, но (принятие Linux1
) 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
Also, is there any better way of achieving this task?
Да, по крайней мере два пути прибывают по моему мнению:
autoconf
"предоставить" мобильность (и это не случайно). Необходимо "только" автоматизировать компиляцию в процедуре установщика приложения.used for development of the openSUSE distribution and to offer packages from same source for Fedora, Debian, Ubuntu, SUSE Linux Enterprise and other distributions
. Необходимо "только" записать один конфигурационный файл, и OBS скомпилирует и упакует приложение для многих дистрибутивов Unix.Очевидно, оба решения требуют, чтобы некоторое время и работа были реализованы.
Ядро Linux работает на большой архитектуре, arch
каталог в его источниках перечисляет 32 (некоторые - действительно несколько, как x86 и x86_64, рука является истинным зоопарком). Общее количество - вероятно, примерно 50.