`अपडेटब` कार्यक्रम इतनी तेजी से क्यों चलता है?


22

आमतौर पर जब मेरे पास ऐसे प्रोग्राम होते हैं जो एक पूर्ण डिस्क स्कैन कर रहे हैं और सिस्टम की सभी फाइलों पर जा रहे हैं तो उन्हें चलने में बहुत लंबा समय लगता है। अपडेटेड तुलना में इतनी तेजी से क्यों चलता है?

जवाबों:


22

उत्तर locateआपके द्वारा उपयोग किए जा रहे संस्करण पर निर्भर करता है , लेकिन यह एक उचित मौका है mlocate, जिसका updatedbफुल डिस्क स्कैन करने से बचकर जल्दी चलता है:

mlocate एक पता लगाने / अद्यतन कार्यान्वयन है। 'म' का अर्थ "मर्जिंग" है: अपडेटेड मौजूदा डेटाबेस को फिर से फाइल सिस्टम के अधिकांश रीयरिंग से बचने के लिए पुन: उपयोग करता है, जो अपडेटेड को तेजी से बनाता है और सिस्टम कैश को अधिक नहीं मिटाता है।

(डेटाबेस प्रत्येक निर्देशिका के टाइमस्टैम्प को स्टोर करता है, ctimeया mtime, जो भी नया हो।)

अधिकांश कार्यान्वयनों की तरह updatedb, mlocateफ़ाइल सिस्टम और पथ को भी छोड़ देगा जिसे इसे अनदेखा करने के लिए कॉन्फ़िगर किया गया है। डिफ़ॉल्ट रूप से में वहाँ कोई नहीं कर रहे हैं mlocateके मामले, लेकिन वितरण आम तौर पर एक बुनियादी प्रदान updatedb.confजो नेटवर्क फाइल सिस्टम, आभासी फाइल सिस्टम आदि पर ध्यान नहीं देता है (देखें डेबियन के विन्यास फाइल उदाहरण के लिए, यह डेबियन में मानक अभ्यास है, इसलिए जीएनयू की updatedbहै समान रूप से कॉन्फ़िगर )।


बहुत अच्छा सवाल और जवाब, यह भी नहीं पता था कि "डिफरेंशियल" स्कैनिंग थे।
रुई एफ रिबेरो

1
धन्यवाद! मैंने कभी नहीं देखा था कि किसी फ़ाइल को संशोधित करने से उसके सभी मूल निर्देशिका के समय और समय में परिवर्तन होता है।
हुगोमग

4
@ ह्यूगोम मुझे नहीं लगता कि यह वास्तव में करता है। यह केवल mtimeअपने तत्काल माता-पिता को बदलना चाहिए ।
Kusalananda

इसलिए अगर मैं इसे सही ढंग से समझता हूं, तो इसके mlocateबारे में परवाह करता है ctimeऔर mtimeइसका मतलब केवल यह है कि क्या निर्देशिका प्रविष्टियों की सूची अभी भी वही है (कोई हटाए गए या जोड़े गए फाइलें नहीं), जिसका अर्थ है कि यह वास्तविक फ़ाइलों की परवाह नहीं करता है। क्या वो सही है ?
सेर्गेई कोलोडियाज़नी

@ शेरगी: बिल्कुल। locateनहीं है grep -R। यह फ़ाइल सामग्री नहीं पढ़ता है।
केविन

9

संशोधन समय की जाँच करने के अलावा, mlocateफ़ाइल सिस्टम के कुछ उप-प्रकारों को भी अनदेखा करता है , जिनमें बहुत सी अनइंस्टालिंग या संभावित डुप्लिकेट फ़ाइलें होती हैं, जैसा कि /etc/updatedb.conf में निर्दिष्ट किया गया है (और मैन अपडेटेड .conf में वर्णित है ):

  • बाँध mounts
  • फ़ाइल सिस्टम के कुछ प्रकार (9p, afs, bdev, आदि)
  • वीसीएस रिपॉजिटरी डेटाबेस (.it, .hg, आदि)
  • कुछ हार्ड-कोडेड निर्देशिका (/ मीडिया, / tmp, / var / स्पूल / कप, आदि)।

हालांकि यह डिफ़ॉल्ट रूप से ऐसा नहीं है, इसलिए आधार व्यवहार उपयोग किए जा रहे वितरण पर निर्भर करता है। (अन्य updatedbकार्यान्वयन भी कॉन्फ़िगर किए गए बहिष्करणों का समर्थन करते हैं।)
स्टीफन किट

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