मेरी सलाह सिर्फ गोली काटने और एक अन्य सूत्र में एक निर्देशिका स्कैन करना है अपने प्रयोगों निगरानी फ़ाइलों दर्ज किया है, तो आप फ़ाइलों के हजारों के बारे में बात कर रहे हैं, भले ही। लेकिन अगर आप जोर देते हैं, तो यहां जवाब है:
अपनी आस्तीन को घुमाने और कर्नेल डाइविंग जाने के बिना ऐसा करने का कोई तरीका नहीं है।
आपका पहला विकल्प FSEvents ढांचे का उपयोग करना है, जो फाइल बनाई, संपादित या हटाए जाने पर अधिसूचनाएं भेजती है (साथ ही विशेषताओं के साथ काम करने के लिए)। अवलोकन here है, और किसी ने एपीआई के आसपास Objective C wrapper लिखा है, हालांकि मैंने इसे आजमाया नहीं है। लेकिन सिंहावलोकन फ़ाइल परिवर्तनों के आसपास की घटनाओं के बारे में हिस्सा का उल्लेख नहीं करता है, केवल निर्देशिकाएं (जैसे kqueue)। मैं अपने स्वयं के लॉगर को संकलित करने के लिए हेडर फ़ाइल here के साथ here से कोड का उपयोग कर समाप्त हुआ जिसका उपयोग मैं व्यक्तिगत फ़ाइल स्तर पर ईवेंट प्राप्त करने के लिए कर सकता था। पृष्ठभूमि में लॉगर चलाने और इसे मॉनिटर करने के लिए आपको अपने ऐप में कुछ कोड लिखना होगा।
वैकल्पिक रूप से, "fs_usage" कमांड पर एक नज़र डालें, जो लगातार सभी फाइल सिस्टम गतिविधि पर नज़र रखता है (और मेरा मतलब है सभी)। यह पहले से ही डार्विन के साथ आता है, इसलिए आपको इसे स्वयं संकलित करने की आवश्यकता नहीं है। आप निर्देशिका परिवर्तनों को सुनने के लिए kqueue का उपयोग कर सकते हैं, जबकि एक ही समय में "fs_usage" से आउटपुट की निगरानी कर सकते हैं। यदि आपको kqueue से एक अधिसूचना मिलती है कि एक निर्देशिका बदल गई है, तो आप fs_usage से आउटपुट देख सकते हैं, देखें कि कौन सी फाइलें लिखी गई थीं, और संशोधित निर्देशिका के विरुद्ध फ़ाइल नामों की जांच करें। fs_usage एक फायरहोज है, इसलिए इसे कम करने के लिए Grep के साथ कुछ विकल्पों का उपयोग करने के लिए तैयार रहें।
चीजों को और अधिक मज़ेदार बनाने के लिए, आपके FSEvents लॉगर और fs_usage दोनों रूट पहुंच की आवश्यकता है, इसलिए आपको अपने ओएस एक्स ऐप में उपयोग करने से पहले उपयोगकर्ता से प्रमाणीकरण प्राप्त करना होगा (Authorization Services Programming Guide को कैसे देखें इसे करने के लिए)।
यदि यह सब बहुत जटिल लगता है, ऐसा इसलिए है क्योंकि यह है। लेकिन कम से कम आपको कठिन तरीके से पता नहीं था!
क्या आप मैक ओएस एक्स और आईओएस दोनों को लक्षित कर रहे हैं? –
मैं ओएस एक्स को लक्षित कर रहा हूं लेकिन मुझे यह भी रुचि थी कि यह आईओएस पर काम करेगी। – DHamrick