Mac की वह eject समस्या जिसे Apple सालों से नज़रअंदाज़ कर रहा है

PowerPC के ज़माने से Mac यूज़र्स अस्पष्ट eject एरर मैसेज की शिकायत कर रहे हैं। Apple ने इसे कभी ठीक नहीं किया। पेश है इस झुंझलाहट भरी समस्या का इतिहास।

अपने Mac पर कोई external ड्राइव eject करने की कोशिश कीजिए और कभी-कभी आपको यह मैसेज मिलता है: “The disk wasn’t ejected because one or more programs may be using it.”

एक या ज़्यादा प्रोग्राम। हो सकता है इस्तेमाल कर रहे हों। यह नहीं कि “कर रहे हैं।” यह नहीं कि कौन-से प्रोग्राम। बस एक अस्पष्ट आरोप कि कहीं कुछ शायद कोई फ़ाइल खोले बैठा है।

यह एरर मैसेज लगभग इसी रूप में पंद्रह साल से भी ज़्यादा समय से मौजूद है। Mac यूज़र्स कम से कम Snow Leopard के दौर से Apple के सपोर्ट फ़ोरम पर इसका हल माँग रहे हैं। शिकायतें हर macOS वर्ज़न में जारी हैं: Mountain Lion, Mavericks, Catalina, Monterey, Ventura, Sonoma, Sequoia। मैसेज कभी नहीं बदलता। Apple इसे कभी ठीक नहीं करता।

समस्या साफ़ है

जब आप कोई डिस्क eject नहीं कर पाते, तो आपको दो जानकारियाँ चाहिए: कौन-सा प्रोसेस इसे रोक रहा है, और उस प्रोसेस को कैसे रोकें। macOS आपको इनमें से कुछ नहीं देता।

ऑपरेटिंग सिस्टम को ठीक-ठीक पता होता है कि किस प्रोसेस की फ़ाइलें ड्राइव पर खुली हैं। उसे पता होना ही चाहिए, क्योंकि इसी से वह तय करता है कि eject की अनुमति दे या नहीं। पर यह जानकारी साझा करने के बजाय, macOS आपको टेक्स्ट के रूप में एक कंधे उचकाने वाला इमोजी थमा देता है।

इसकी तुलना Terminal कमांड lsof से कीजिए, जो किसी दिए गए path पर खुली फ़ाइलों वाले हर प्रोसेस की सूची देता है। जानकारी मौजूद है। पहुँच में है। Apple ने बस इसे एरर डायलॉग में डालने का फ़ैसला नहीं किया।

यूज़र असल में क्या करते हैं

इस बेकार एरर मैसेज से जूझते हुए, Mac यूज़र्स ने फ़ोरम पोस्ट और ब्लॉग कमेंट्स के ज़रिए पीढ़ी-दर-पीढ़ी चलने वाले जुगाड़ों का एक लोककथा-जैसा भंडार तैयार कर लिया है।

आशावादी लोग रुकते हैं और दोबारा कोशिश करते हैं, इस उम्मीद में कि कोई रहस्यमय प्रोसेस खुद-ब-खुद पूरा हो जाए। कभी-कभी यह काम करता है। अक्सर नहीं करता।

तकनीकी रुझान वाले Terminal खोलकर lsof /Volumes/DriveName चलाते हैं, फिर आउटपुट को पढ़कर असली वजह पहचानते हैं। इसके लिए यह जानना ज़रूरी है कि कमांड मौजूद है, उसके आउटपुट को पढ़ना आना चाहिए, और प्रोसेस को kill करने में सहज होना चाहिए।

बेसब्र लोग force eject कर देते हैं और अच्छे की उम्मीद करते हैं। कभी-कभी यह ठीक रहता है। कभी-कभी यह डेटा खराब कर देता है। यह जाने बिना कि असल में ड्राइव कौन इस्तेमाल कर रहा है, जोखिम का अंदाज़ा लगाने का कोई तरीका नहीं है।

झल्लाए हुए लोग बस अपना Mac रीस्टार्ट कर देते हैं। यह पक्का काम करता है, पर यह बेतुका है कि किसी ड्राइव को निकालने के लिए कंप्यूटर को रीबूट करना पड़े।

Apple ने इसे ठीक क्यों नहीं किया?

पक्के तौर पर सिर्फ़ Apple जानता है, पर कुछ अटकलें हैं:

एरर डायलॉग को बदलना पड़ेगा, और Apple ऐतिहासिक रूप से यूज़र को दिखने वाले मैसेज में जटिलता जोड़ने से बचता है। पर “Safari is using this disk” “one or more programs may be using it” से ज़्यादा जटिल नहीं है। यह ज़्यादा उपयोगी है।

रोकने वाले प्रोसेस की सूची कुछ असाधारण मामलों में लंबी या उलझाने वाली हो सकती है। सच है, पर सबसे प्रमुख वजह दिखाना कुछ न दिखाने से अनंत गुना बेहतर होगा। और असाधारण मामलों के लिए, एक “Show Details” बटन तो आम चलन है।

ज़्यादातर यूज़र इस समस्या से इतनी बार नहीं टकराते कि ज़ोर से शिकायत करें। शायद, पर Apple Support Communities और MacRumors फ़ोरम सालों पुराने थ्रेड्स से भरे पड़े हैं। समस्या अच्छी तरह दर्ज है।

असली जवाब शायद प्राथमिकता का है। Apple के पास सीमित इंजीनियरिंग संसाधन हैं और यह समस्या, भले ही झुंझलाहट भरी हो, लोगों को अपने Mac इस्तेमाल करने से नहीं रोकती। यह बस उन्हें हर कुछ हफ़्तों में अपनी स्क्रीन की ओर देखकर बड़बड़ाने पर मजबूर करती है।

समस्या और बिगड़ती जा रही है

जैसे-जैसे external storage आम होता जा रहा है (तेज़ USB-C SSDs, वीडियो एडिटिंग के लिए portable ड्राइव, Time Machine के लिए backup ड्राइव), यूज़र इस एरर से ज़्यादा बार टकराते हैं।

macOS भी अब और ज़्यादा बैकग्राउंड प्रोसेस चला रहा है जो external ड्राइव को एक्सेस करते हैं। Spotlight indexing, Time Machine monitoring, iCloud syncing, और तरह-तरह के daemon प्रोसेस। संभावित रोकने वालों की संख्या बढ़ गई है, पर एरर मैसेज उतना ही अस्पष्ट बना हुआ है।

पुराने Mac से शिफ्ट होने वाले यूज़र बताते हैं कि Apple Silicon मशीनों पर यह समस्या ज़्यादा बार सामने आती है। यह कोई सॉफ़्टवेयर बदलाव है या बस एक धारणा, यह साफ़ नहीं है, पर M1 के बाद से शिकायतें तेज़ हो गई हैं।

Third-party समाधान मौजूद हैं

यह तथ्य कि third-party डेवलपर्स ने इस समस्या के इर्द-गिर्द पूरी-पूरी एप्लिकेशन बना डाली हैं, अपने आप में कुछ कहता है।

What’s Keeping Me एक लोकप्रिय यूटिलिटी थी जो दिखाती थी कि कौन-से प्रोसेस किसी ड्राइव को रोक रहे हैं। इसे सालों पहले छोड़ दिया गया और यह अब आधुनिक macOS पर नहीं चलती, पर इसका अस्तित्व यह साबित करता है कि इस फ़ीचर की माँग थी।

इस कमी को भरने के लिए तरह-तरह की menu bar यूटिलिटी और स्क्रिप्ट सामने आई हैं। कुछ ड्राइव की निगरानी करती हैं और eject की समस्या आने से पहले आपको चेतावनी देती हैं। कुछ lsof वाले काम को ऑटोमेट कर देती हैं ताकि आपको Terminal कमांड टाइप न करनी पड़े।

इन टूल्स को मौजूद होने की ज़रूरत ही नहीं होनी चाहिए। ये जो सुविधा देते हैं वह बुनियादी ऑपरेटिंग सिस्टम क्षमता है जिसे Apple ने सामने न लाने का फ़ैसला किया।

एक सही समाधान कैसा होता

न्यूनतम कारगर समाधान सरल है: एरर डायलॉग को बदलकर यह बताया जाए कि कौन-सा प्रोसेस eject रोक रहा है। “The disk can’t be ejected because Spotlight is indexing it” आपको ठीक-ठीक बता देता है कि क्या हो रहा है। आप indexing पूरी होने का इंतज़ार कर सकते हैं, या Spotlight को quit कर सकते हैं, या जोखिम जानते हुए force eject करने का फ़ैसला कर सकते हैं।

एक बेहतर समाधान डायलॉग से ही रोकने वाले प्रोसेस को quit करने का विकल्प जोड़ देता। “Safari has files open on this disk. [Quit Safari and Eject] [Cancel]” यूज़र को Activity Monitor में ढूँढे बिना ही एक क्लिक में समस्या हल कर देता है।

आदर्श समाधान सक्रिय (proactive) होता: यूज़र को तब चेतावनी दे जब उनकी external ड्राइव पर बिना सेव किए बदलाव हों, या जब बैकग्राउंड प्रोसेस सक्रिय रूप से उसे इस्तेमाल कर रहे हों। लोगों को eject करने और झल्लाने से पहले ही बता दिया जाए।

इनमें से कोई भी तकनीकी रूप से मुश्किल नहीं है। सबसे कठिन हिस्सा शायद यह उत्पाद-निर्णय है कि यह बदलाव बिल्कुल किया भी जाए या नहीं।

फ़िलहाल

Apple शायद इसे आखिरकार ठीक कर दे। जब सितारे मिल जाते हैं तो वे लंबे समय से चली आ रही झुंझलाहटों को संबोधित करने के लिए जाने जाते हैं। तब तक, जुगाड़ वही रहेंगे: Terminal कमांड, Activity Monitor की जासूसी, या Ejecta जैसे टूल जो यह जासूसी आपके लिए कर देते हैं।

किसी ड्राइव को निकालना इतना मुश्किल नहीं होना चाहिए। पर यह है, और सालों से रहा है, और Apple को इसकी परवाह नहीं दिखती।

अगर आप हर बार Terminal इस्तेमाल नहीं करना चाहते, तो Ejecta आपको ठीक-ठीक दिखाता है कि कौन सा process आपके drive को रोक रहा है — और सीधे आपके menu bar से एक क्लिक में उसे बंद कर देता है।

अभी खरीदें — $9.99