मैं उन फ़ाइलों को कैसे सूचीबद्ध कर सकता / सकती हूं, जिन्हें केवल पढ़ने-लिखने के लिए रोका जा सकता है?
ए) पैकेज fuserमें पाया जा सकता है psmisc; यह एक उपयोग का मामला है जहां मुझे fuserचमक मिलती है और की तुलना में अधिक उपयोगी है lsof।
# fuser -v -m / 2>&1 | grep '[Ff]r.e'
यह उन सभी प्रक्रियाओं को दिखाएगा, जिनमें पठन (एफ) और लेखन (एफ) के लिए फाइलें खुली हों। वे फाइलें जो केवल पढ़ने के लिए रिमूव होने से / रोकती हैं, वे लेखन (एफ) के लिए खोली जाती हैं।
प्रक्रियाओं है कि एक कर रहे हैं को मारने के रूट निर्देशिका के साथ निष्पादन किया जा रहा रन फ़ाइलें लिखने के लिए खुला । अर्थात
# for fupid in $(fuser -v -m / 2>&1 | grep Fr.e | awk '{print $2}'); do kill $fupid; done
यह systemdएक चेतावनी के साथ टिप्पणियों के ऊपर है । यदि systemdहै initतो fuserइसे देखेंगे और अन्य विचार हैं। systemdदौड़ने के साथ , यह आपकी पीठ के पीछे की प्रक्रियाओं को फिर से शुरू कर सकता है, भले ही वे अभी पहचाने और मारे गए हों fuser। systemdपारंपरिक की तुलना में बहुत अधिक उन्नत है sysvinit।
बी) विवरण में अद्यतन केवल प्रणाली है ... initऔर gettyअभी भी चल रहा है ...
मैं उस टिप्पणी को देखता हूं जो कहती है कि सिस्टम उपयोग नहीं कर रहा है systemd, यह उपयोग कर रहा है init। खिंचाव पर, systemd है init । टिप्पणी ने स्पष्ट रूप से नहीं कहा sysvinit, इसलिए मैं मान रहा हूं कि सिस्टम विचाराधीन डिफ़ॉल्ट खिंचाव का उपयोग कर सकता systemdहै init। या कि अन्य लोग जो इस पोस्ट पर ठोकर खाते हैं, जो खिंचाव का उपयोग कर रहे हैं systemd, इस भाग को उपयोगी पाते हैं।
प्रति डेबियन विकी ,
सिस्टम इनिशियलाइज़ेशन प्रक्रिया को इनिट डेमॉन द्वारा नियंत्रित किया जाता है। निचोड़ और पहले रिलीज में, डेमॉन को सिसविनीट पैकेज द्वारा प्रदान किया जाता है, और कोई विकल्प समर्थित नहीं है। में खरखरा , डिफ़ॉल्ट init डेमॉन अब भी हैsysvinit , लेकिन systemd के एक "प्रौद्योगिकी पूर्वावलोकन" उपलब्ध है। में जेसी और खिंचाव , डिफ़ॉल्ट init प्रणाली हैsystemd , लेकिन sysvinit को स्विचिंग समर्थित है।
जेसी के बाद से, केवल सिस्टमड पूरी तरह से समर्थित है; सिसविनीट को ज्यादातर समर्थन दिया जाता है, लेकिन सिबिनिट स्टार्ट स्क्रिप्ट प्रदान करने के लिए डेबियन पैकेज की आवश्यकता नहीं होती है। रनिट को भी पैक किया गया है, लेकिन अन्य के समान परीक्षण और समर्थन नहीं मिला है, और वर्तमान में पीआईडी 1 के रूप में समर्थित नहीं है।
systemdरनिंग के साथ , कुछ अतिरिक्त चरण हैं जिन्हें मुक्त करने के लिए उठाया जाना चाहिए / ताकि इसे बिना समस्या के रिमूव किया जा सके।
यह संभावना system.sliceहै कि ( systemd-journald.serviceया systemd-udevd.serviceजिसमें सॉकेट निर्भरता है) दोनों के लिए खुली फाइलें हैं । या, यदि NetworkManagerयह चल रहा है , तो यह रिस्पना कर सकता है dhclientजो पट्टों को / var / ... (& / var / हमेशा अपना उपकरण नहीं है) लिखता है , आदि fuserहो सकता है कि आपको मिल जाए और आप उसे मार दें, dhclientलेकिन NetworkManagerइसे तुरंत शुरू करें।
नैतिक बहुत सी चीजें स्वचालित हैं जो 'चाहते हैं' / (और इससे भी अधिक systemd)।
यह सुनिश्चित करने के लिए, यदि यह संभव है, तो systemdरन स्तर 1 के बराबर का मिलान होता है rescue.target(और runlevel1.targetयह एक प्रतीकात्मक लिंक है rescue.target)।
1) सिस्टम को अलग-थलग करके शुरू करें rescue.target
# systemctl isolate rescue.target
यह आपको रूट पासवर्ड दर्ज करने के लिए संकेत देना चाहिए; स्क्रीन निर्देशों का पालन करें।
2) बचाव शेल में, पता करें कि क्या चाहिए /।
# systemctl show -p Wants /
आमतौर पर, यह system.slice; वह सब कुछ रोक देता है जो / चाहता है। जैसे
# systemctl stop system.slice
3) इस बिंदु पर, रिमाउंट को रिपोर्ट नहीं करना चाहिएmount: / is busy और काम mount -o remount,ro / करना चाहिए । यदि नहीं, तो फिर से जांचें fuser।
4) एफडब्ल्यूआईडब्ल्यू; मैंने यह भी देखा है कि umountजब कोई अन्य डिवाइस किसी अन्य माउंट के उप-निर्देशिका पर आरूढ़ होता है, तो विफल रहता है, अर्थात नेस्टेड माउंट। उदाहरण के लिए, umount /विफल होगा अगर / var / या / boot / किसी अन्य डिवाइस (और घुड़सवार) पर है। हालांकि mount -o remount,ro /इस मामले में अभी भी काम करना चाहिए।
lsblk नेस्टेड mounts कल्पना करने के लिए सहायक हो सकता है।
Lsof + L1 अब उन खुली हुई फ़ाइलों की सूची क्यों नहीं देता जिन्हें अनलिंक किया गया है?
क्योंकि वे उपलब्ध नहीं हैं (सॉकेट या अधिकांश एफआईएफओ और पाइप), वे अब फाइलें नहीं खोल रहे हैं (मूल प्रक्रिया ने फ़ाइल विवरणक को बंद कर दिया है), या उनके पास (अभी भी) 1 से अधिक लिंक गिनती है।
आदमी lsof (8) विवरण ...
+ - -एल [एल]
यह विकल्प ('+') या निष्क्रिय करता है ('-') फ़ाइल लिंक की सूची गिना जाता है, जहां वे उपलब्ध हैं - उदाहरण के लिए, वे सॉकेट, या अधिकांश फीफो और पाइप के लिए उपलब्ध नहीं हैं।
जब + L को निम्नलिखित संख्या के बिना निर्दिष्ट किया जाता है, तो सभी लिंक काउंट सूचीबद्ध होंगे। जब -L निर्दिष्ट किया जाता है (डिफ़ॉल्ट), कोई लिंक मायने नहीं रखता है।
जब + L को एक नंबर से फॉलो किया जाता है, तो केवल उस संख्या से कम लिंक काउंट वाली फाइलें सूचीबद्ध की जाएंगी । (कोई संख्या नहीं हो सकती है -L।) '' + L1 '' फॉर्म का एक विनिर्देश उन खुली फ़ाइलों का चयन करेगा जिन्हें अनलिंक किया गया है। प्रपत्र का एक विनिर्देश +aL1 <file_system>निर्दिष्ट फ़ाइल सिस्टम पर अनलिंक की गई खुली फ़ाइलों का चयन करेगा।
wयाuमेंFDके स्तंभlsofउत्पादन, या के लिएFके उत्पादन मेंfuser -vm /, उदाहरण के लिए। मैं आपको एक संपूर्ण सूची नहीं दे सकता, हालांकि। आप जरूरतमंद पैकेज को स्थापित करना चाह सकते हैं ।