क्या विंडोज पर कुछ भी ऐसा नहीं है?


103

लिनक्स ओएस के साथ, आयनोटिफ़ाइट सबसिस्टम है जो फ़ाइल सिस्टम में परिवर्तनों के एक आवेदन को सूचित करता है।

हालांकि, मैं मुख्य रूप से एक विंडोज उपयोगकर्ता हूं, इसलिए मैं सोच रहा था कि क्या फाइल सिस्टम परिवर्तनों की निगरानी करने का एक समान तरीका है?


9
मुझे नहीं लगता कि ऐसे सवाल विषय से हटकर हैं। सवाल ओएस एपीआई के लिए पूछता है जो किसी भी उपकरण / सॉफ्टवेयर-लाइब्रेरी से बहुत अलग है। हो सकता है कि इसे अलग-अलग शब्दों में लिखा जा सकता है जैसे कि किसी विशेष फ़ाइल / फ़ाइलों को संशोधित करने पर किसी विंडोज़ अनुप्रयोग में कैसे अधिसूचित किया जाए।
बाल्की

1
फिर से खोलने की कोशिश की: प्रश्न एक विशिष्ट ऑपरेटिंग सिस्टम एपीआई के लिए एक तुलनीय विकल्प के लिए पूछ रहा है और अनुमान लगाता है कि मुझे "मैं इंग्लैंड से हूं जहां मैं खाना खाने के लिए एक कांटा का उपयोग करता हूं, जापान में मैं एक समान फैशन में किस बर्तन का उपयोग करता हूं?" " उस सादृश्य का उपयोग करते हुए स्वीकृत उत्तर है "चॉपस्टिक का उपयोग करें।"
डेविड

जवाबों:



42

यदि आप .net का उपयोग कर रहे हैं , तो उपयोग करें FileSystemWatcher। अधिक जानकारी यहाँ: http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

आप उपयोग कर रहे हैं सी , उपयोग FindFirstChangeNotification, FindNextChangeNotification, ReadDirectoryChangesW। अधिक जानकारी यहाँ: http://msdn.microsoft.com/en-us/library/aa365261(VS.85..xx

पर OSX , प्रासंगिक एपीआई है fseventsएपीआई।

वे सभी एक दूसरे से सूक्ष्म रूप से भिन्न हैं, और उन सभी में किनारे के मामलों में संदिग्ध विश्वसनीयता है। सामान्य तौर पर, आप 100% समय के सभी परिवर्तनों को देखने के लिए इन एपिस पर निर्भर नहीं रह सकते। फ़ाइल सिस्टम मॉनिटरिंग का उपयोग करने वाले अधिकांश लोग इसे पुश एपी से खोई या अधूरी जानकारी की भरपाई के लिए समय-समय पर स्कैन के साथ जोड़ते हैं।


6
क्या आप कृपया "उद्धरण के लिए किनारे मामले में संदिग्ध विश्वसनीयता पर कुछ प्रशस्ति पत्र दे सकते हैं?
फिरौन

18
यदि एक एफएस वॉचर एपी का एक उपभोक्ता घटनाओं को पढ़ने की तुलना में धीमा है, तो किसी अन्य प्रक्रिया को उत्पन्न करने पर है, कर्नेल को या तो फाइलसिस्टम संशोधनों को दूसरे (संभवतः उच्च प्राथमिकता) प्रक्रिया में रखने की आवश्यकता है, या बफर के असीमित विकास की अनुमति है। inotify की बफर डेप्थ (जैसा कि मैन पेज में डॉक्यूमेंटेड है) / proc / sys / fs / inotify / max_queued_events द्वारा नियंत्रित किया जाता है। इसके अलावा, आपको एक IN_Q_OVERFLOW सूचना मिलती है - यह अच्छा है, लेकिन आप अभी भी ऐसी स्थिति में रह गए हैं, जहां आपको समय-समय पर rescan करने की आवश्यकता हो सकती है।
9

अहा ठीक है, मैं हाल ही में कतार में पढ़ रहा था। मुझे लगता है कि यह किनारे का मामला इस बात पर निर्भर करेगा कि आप कितनी फ़ाइलों की निगरानी कर रहे हैं और यह इस बात पर भी निर्भर करता है कि इसके महत्वपूर्ण सभी परिवर्तनों को ट्रैक करने के लिए या यदि कुछ याद किया जा सकता है। लेकिन यह एक अच्छी बात है। धन्यवाद :)
फिरौन

@blucz मैं खुद को आश्चर्यचकित कर रहा था कि कर्नेल लोग इन स्थितियों को कैसे हल करते हैं। यह जानने के लिए अच्छा है कि वे ऐसा करते हैं, डिजाइन और कार्यान्वयन में एक और विश्वास दिलाता है।
n611x007


11

Microsoft से JNotify या FileMon


8
JNotify मेरे लिए एकदम सही था क्योंकि मुझे क्रॉस-प्लेटफॉर्म संगतता की आवश्यकता थी। मैं एक भी बैश स्क्रिप्ट लिखने में सक्षम था, जो कि साइबरविन, मैक और लिनक्स में काम करती थी, केवल यह मानकर कि JAVA_HOME सही तरीके से सेट किया गया था। यह ग्राहकों की मशीनों पर डिबगिंग समस्याओं के लिए एक बड़ी सहायता है, जब वे कहते हैं कि "इसने मेरी फ़ाइल को हटा दिया!" मैं वास्तव में लॉग को देख सकता हूं और यह पता लगाने की कोशिश कर सकता हूं कि कैसे / कब हुआ।
सेमी जूलर्स

1
MECU

10

थोड़ी देर लेकिन लेकिन ...

विंडोज़ में OSX घटनाओं के समान एक सुविधा है जिसके द्वारा आप बिना ऐप चलाए घटनाओं की निगरानी कर सकते हैं। Windows USN जर्नल सभी फ़ाइल परिवर्तनों का ट्रैक रखता है। जेफरी रिक्टर (उन्नत विंडोज के लेखक) ने MSDN जर्नल के लिए काम करने वाले नमूनों के साथ एक शानदार लेख लिखा । अद्यतन करें : अब MSJ में अब ऑनलाइन से आर्काइव.ऑर्ग का लेख ऑनलाइन नहीं है।

यूएसएन परिवर्तन पत्रिकाओं के लिए MSDN प्रलेखन।

यूएसएन चेंज जर्नल्स संभवतः बेहतर होते हैं यदि आप बैकअप टूल या इंडेक्स जैसे एप्लिकेशन का निर्माण कर रहे होते हैं जो पूरे संस्करणों की निगरानी करने की आवश्यकता होती है।


क्या USN जर्नल कोई अलग तरीका है, इस पर भरोसा करने से बग्गी व्यवहार से बच जाता है FileSystemWatcher| FindFirstChangeNotification PhillipBrandonHolmes की बात कर रहा था ?
n611x007 10

4
जब से मैंने इस के साथ काम किया है, तब से यह एक समय हो गया है, लेकिन यह FileSystemWatcher या FindFirstChangeNotification का उपयोग नहीं करता है। मैंने गो में एक विंडोज इवेंट वॉचर लिखना शुरू कर दिया, जो कि जेफरी रिक्टर के उदाहरणों पर आधारित था। मैंने जो कुछ परीक्षण किया है, वह रॉक सॉलिड है, और OS X में फसेवेन्ट्स के समान कुछ भी याद नहीं है। Gist
पीटर क्रिस्चियन

@PeterKrnjevic क्या आप जेफरी रिक्टर के लेख के लिंक को अपडेट कर सकते हैं?
SOUser

@SOUser, MS bitrot के कारण, अब लेख आर्काइव.ओआरजी से जुड़ा हुआ है।
पीटर क्रांजेविक

3

FileSystemWatcher () मुख्य रूप से इस तथ्य के कारण अविश्वसनीय है कि वॉचर बफर के लिए त्रुटि हैंडलिंग कम या ज्यादा अधूरी है। पथ की कमी और विस्तृत त्रुटि से निपटने की जानकारी के कारण, Microsoft आपको कार्यशील निर्देशिका को पुनर्प्राप्त करने या मैन्युअल रूप से चुनने का कोई रास्ता नहीं देता है।

विंडोज के लिए JNotify अविश्वसनीय भी है क्योंकि यह बग ^32 से निकलता है। JNotify win32 का उपयोग करता है। तो, यह FileSystemWatcher () से अलग नहीं है।


इस 'गति' / 'दौड़' / 'अतिप्रवाह' जैसी समस्या को हल करने के लिए भूमिकाओं को कैसे डिज़ाइन किया जाए, इस बारे में सोचकर, मैंने खुद को आश्चर्यचकित किया कि गुठली ने यह कैसे किया। दिलचस्प। यह बात नेटवर्किंग और लॉगिंग के साथ भी होती है। क्या इस समस्या का कोई नाम है?
n611x007 10

हां इसका नाम "बग" है। Microsoft द्वारा बनाए गए प्रत्येक ऑपरेटिंग सिस्टम में बग (win32) छोड़ दिया गया है। यह किसी भी Microsoft ऑपरेटिंग सिस्टम को फ़ाइल देखने के प्रकार के समाधान के लिए अयोग्य बनाता है। इसे पूरा करने के लिए आपको * निक्स जाना होगा। कभी-कभी मुझे लगता है कि उन्होंने सुरक्षा कारणों से जानबूझकर इस बफर ओवरफ्लो को छोड़ दिया है।
फिलिप ब्रैंडन होम्स

हाहा .. हाँ .. यह नाम जानबूझकर क्लस्टर कीचड़ है ताकि microsoft की फाइल सिस्टम को जानबूझकर नहीं देखा जा सके। यह एक बग है जिसे उन्होंने सुरक्षा चिंताओं के कारण छोड़ दिया है।
फिलिप ब्रैंडन होम्स

1

मैंने थोड़ी खोज की, मुझे लगता है कि विंडोज के लिए कुछ ऐसा ही था। नहीं है FileSystemWatcher नेट के लिए। इसका मुख्य रूप से NT या XP और आगे के लिए।


यह आमतौर पर केवल NTFS फाइलसिस्टम पर उपलब्ध है, लेकिन FAT16, FAT32 या यहां तक ​​कि नए एक्सफैट पर नहीं।
मस्तचेता

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.