Bir kabuk çözümü hakkında hiçbir fikrim yok, ancak (Linux varsayarsak 1
) inotify
gidilecek yol olabilir ... taklit edentail -F
(kullanarak pyinotify
) bu örneğe bakın , belki bir dizinin tamamını izlemek için bir temel olarak kullanılabilir .
Genel olarak, inotify
dizinleri izleyebilir (kaynak gösterme man 7 inotify
)
İnotify_add_watch (2) çağrılırken aşağıdaki bitler maskede belirtilebilir ve read (2) tarafından döndürülen maske alanına geri döndürülebilir:
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 (*).
Bir dizini izlerken , yukarıda (*) işaretli olaylar, dizindeki dosyalar için meydana gelebilir; bu durumda, iade edilen inotify_event yapısındaki isim alanı, dizindeki dosyanın adını tanımlar.
(... ve pyinotify
tez seçeneklerini yakından takip ediyor)
1
: BSD'lerin de benzer bir şeyi var kqueue
. Belki de bir çapraz platform çözeltisi elde GIO (kullanan Python bağlantıları bu yanında çünkü soyutlama katmanı gibi) inotify
, aynı zamanda kullanımıkqueue