ओएस एक्स: क्या मैं ट्रैक कर सकता हूं कि डिस्क पर कौन सी फाइलें एक्सेस की जा रही हैं?


0

मेरे पास कई बाहरी हार्ड ड्राइव हैं। वे उपभोक्ता ड्राइव हैं जो अप्रयुक्त होने पर स्वचालित रूप से "सो जाते हैं" (नीचे स्पिन); मैं उन्हें 24x7 नहीं चला सकता (और नहीं चाहता)। मैं उन्हें बैकअप और दीर्घकालिक भंडारण के लिए सख्ती से उपयोग करता हूं।

बहुत बार, मैं एक प्रोग्राम के कुछ अप्रासंगिक सुविधा का उपयोग करूँगा (जैसे "डॉको में" माइक्रोसॉफ्ट वर्ड में एक डॉक्स पर जो मुख्य ड्राइव पर है) - एप्लिकेशन फ्रीज हो जाएगा, और मैं एक बाहरी हार्ड ड्राइव को स्पिन करूँगा। (या हर एक ड्राइव स्पिन अप, एक बार में।) फिर कार्यक्रम को अनफ्रीज कर देगा। यदि मैं ड्राइव को अनमाउंट करता हूं तो प्रोग्राम परेशान नहीं होता है; यह बस ऐसा करना बंद कर देता है।

और मैं सोच रहा हूँ: यह किस पृथ्वी पर है? इसलिए मैं समझ सकता हूं कि इस झुंझलाहट को कैसे रोका जाए। उदाहरण के लिए, यदि यह बाहरी ड्राइव पर पाए जाने वाले फोंट का दोहन कर रहा है, तो मैं यह सुनिश्चित कर सकता हूं कि वे ज़िप फ़ाइलों के अंदर दुर्गम हैं।

मेरा सवाल है: मैं अनुप्रयोगों द्वारा फ़ाइलों तक लगातार प्रवेश कैसे कर सकता हूं ? मैंने उपयोग करने की कोशिश की है, lsof | grep /Volumes/लेकिन यह केवल वर्तमान में खुली फ़ाइलों का एक स्नैपशॉट है ; यह हमेशा उस क्षण को याद करता है जब उस ऐप में वह फ़ाइल खुली होती है।


मैंने fs_usage दृष्टिकोण की कोशिश की, इस संदेश के फट गए: fs-usage: buffer overrun, events generated too quickly: 123456 लेकिन अंततः यह सामने आया:

23:32:47  getattrlist       /Volumes/Teeny/RSreorg                                                         0.000006   Microsoft Ex
23:32:47  getattrlist       /Volumes/Teeny/RSreorg                                                         0.000002   Microsoft Ex
23:32:59  getattrlist       /Volumes/Teeny/RSreorg                                                         0.000005   Microsoft Ex
23:32:59  getattrlist       /Volumes/Teeny/RSreorg                                                         0.000002   Microsoft Ex
23:32:59  getattrlist       /Volumes/Teeny/RSreorg                                                         0.000003   Microsoft Ex
23:32:59  getattrlist       /Volumes/Teeny/RSreorg                                                         0.000002   Microsoft Ex

यह तब हुआ जब मैं एक एक्सेल स्प्रेडशीट को बंद कर रहा था। यह एक स्क्रैडपैड डिस्क है, और उस निर्देशिका को वर्षों पहले हटा दिया गया था। स्प्रेडशीट एक नई फ़ाइल थी जिसका उस स्थान से कोई लेना देना नहीं था।

पाठ स्ट्रिंग के लिए ड्राइव की खोज करने पर RSreorgकेवल 2 फाइलें सामने ~/Library/Preferences/com.microsoft.office.plistआईं , दोनों , अंत में अस्थायी (अस्थायी फ़ाइल) के साथ एक ... वेब खोज से पता चलता है कि Microsoft मेरी लाइसेंस कुंजियों को संग्रहीत करता है, लेकिन पाठ स्कैन सैकड़ों अन्य बेकार और गलत निर्देशिकाओं का खुलासा करता है। Microsoft क्या कर रहा है?

और जाहिरा तौर पर यह जवाब सीधे फ़ाइल को हटाने का समर्थन करता है

जवाबों:


2

ऐसा करने के लिए एक अच्छा मुफ्त चित्रमय ऐप हुआ fseventerकरता था, लेकिन यह वास्तव में 10.9 या उसके बाद के संस्करण में काम नहीं करता था, और आम तौर पर किसी भी अधिक उपलब्ध नहीं लगता है।

आप कोशिश कर सकते हैं opensnoop, एक कमांड लाइन उपयोगिता जो वास्तविक समय में फ़ाइलों को एक्सेस करने से दिखाती है। इसका सबसे सरल आह्वान है:

$ sudo opensnoop

जो आपको सिस्टम पर एक्सेस की जा रही हर फाइल की लाइव अपडेटिंग लिस्ट देगा। यदि आपको किसी विशेष एप्लिकेशन पर संदेह है, तो आप इसका आउटपुट फ़िल्टर करके केवल यह दिखा सकते हैं कि वह एप्लिकेशन क्या कर रहा है:

$ sudo opensnoop -n Word

(IIRC यह आंशिक लेकिन केस-संवेदी नाम मिलान करता है, इसलिए "Word" "Word", "MS Word", "Microsoft Word" आदि से मेल खाएगा, लेकिन "शब्द" नहीं।)

या आप इसका उपयोग यह देखने के लिए कर सकते हैं कि किसी विशेष फ़ाइल का उपयोग क्या है (केवल उदाहरण के लिए, मुझे कोई पता नहीं है कि क्या यह एक वास्तविक एमएस वर्ड वरीयता फ़ाइल है):

$ sudo opensnoop -f /Library/Preferences/com.microsoft.msword

अन्य विकल्पों के लिए, मैन पेज देखें।


1

आप fs_usageफ़ाइल सिस्टम गतिविधियों से संबंधित सभी सिस्टम कॉल देखने के लिए उपयोग कर सकते हैं । आउटपुट काफी बड़ा है, इसलिए आपको संभवतः इसे किसी फ़ाइल में रीडायरेक्ट करना होगा

  1. sudo fs_usage > fs.outटर्मिनल में चलाएं
  2. Word प्रारंभ करें और बाहरी ड्राइव को स्पिन करने के लिए प्रतीक्षा करें
  3. टर्मिनल पर जाएं, दबाएं Ctrl-Cऔर देखेंfs.out

आप आउटपुट को कुछ प्रक्रियाओं तक सीमित कर सकते हैं, उस पर विवरण के लिए मैन पेज देखें।

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