2013-05-05 3 views
7

फ़ाइल सिस्टम घटनाओं को पढ़ने के लिए लिनक्स में, हम में से अधिकांश इनोटिफ़ का उपयोग करते हैं जो वास्तव में एक अच्छा है। लेकिन इसकी सीमाएं हैं। मुझे उन सभी निर्देशिकाओं का ट्रैक रखना है जिन्हें मुझे देखना है और प्रत्येक निर्देशिका के लिए एक इनोटिफ़ाई डिस्क्रिप्टर प्राप्त करना है। मान लें कि मैं अपनी पूरी प्रणाली की निगरानी करना चाहता हूं और इसमें लगभग 10 मिलियन निर्देशिकाएं हैं। इनोटिफ़ी एपीआई के लिए उन्हें सूचीबद्ध और कतार में ही घंटों लगेंगे। यह बहुत सारी स्मृति भी खाएगा। और मैं निश्चित रूप से /etc/syscntl.conf या/proc/sys/fs/inotify/max_user_watches में max_user_watches में निर्दिष्ट निर्देशिका से अधिक निर्देशिका नहीं देख सकता।लिनक्स कर्नेल से फ़ाइल सिस्टम घटनाओं को पढ़ना इनोटिफ़

लेकिन हम जानते हैं कि प्रत्येक फ़ाइल सिस्टम इवेंट की निगरानी कर्नेल द्वारा की जाती है और हम एक निश्चित निर्देशिका संशोधनों के लिए पंजीकरण करने के लिए इनोटिफ़ी एपीआई का उपयोग करते हैं। लेकिन मैं सीधे एपीआई के बिना कर्नेल से fs घटनाओं को कैसे पढ़ूं ..? [मैक ओएस एक्स में, मैं/dev/fsevents से पढ़ सकता हूं, वैसे ही अगर मैं/proc या उस तरह से कुछ पढ़ सकता हूं, तो यह बहुत अच्छा होगा]। मैं कर्नेल मॉड्यूल भी लिखने के लिए तैयार हूं, लेकिन कृपया इस पर कुछ प्रकाश साझा करें।

+0

यह एक बहुत ही उपयोगी सवाल है। मैं लिनक्स वितरण पर कुछ भी लागू करने की कोशिश कर रहा हूं, लेकिन सफल नहीं हुआ। हो सकता है कि 'lsof' आपकी आवश्यकताओं को पूरा कर लेगा। – psibar

उत्तर

5

क्या आपने वायरस स्कैनर सामान देखा था? Ie, Fanotify, fsnotify और dnotify और inotify। यह kernel version पर निर्भर करता है; लगभग 2.6.36 (2011 की शुरुआत) के बाद से कुछ रूप में मौजूद है।

कुछ कर्नेल फ़ाइलें,

Lwn.net लिंक,

संबंधित मुद्दे