हर बूट पर fsck को कैसे मजबूर करें - सभी (प्रासंगिक) फाइल सिस्टम?


14

मैं एक फैनलेस पीसी (उनमें से सैकड़ों, वास्तव में) के साथ काम कर रहा हूं जिसमें डेबियन 6 और 3 विभाजन हैं (FAT और 2x ext2)। सिस्टम में पावर बटन नहीं है, इसलिए अधिकांश लोग init 0 (या समतुल्य) के बजाय प्लग को 'शट डाउन' करने के लिए yank करते हैं। एक परिणाम के रूप में filesystem (s) बहुत तेजी से त्रुटियों का निर्माण।

मैंने fsck को मजबूर करने के लिए 'shutdown -rF' का उपयोग करने की कोशिश की है, लेकिन यह काम नहीं करता है। मुझे आश्चर्य है कि अगर माउंट होने से पहले प्रत्येक माउंट पॉइंट / FS को जांचने के लिए सिस्टम को बताने का कोई तरीका है।

मैंने fsck param को / etc / fstab में सेट करने की कोशिश की है। यह आम तौर पर मुझे एक 'त्रुटियां मिली। मैन्युअल रूप से fsck संदेश चलाएँ।

क्या प्रयास करने के लिए अन्य विकल्प हैं?


1
A) आपके उपयोगकर्ता कौन थे? बी) क्या आप एक प्रमुख "शट डाउन" बटन जोड़ सकते थे जो हमेशा ऑनस्क्रीन दिखाई देता था? सी) वैकल्पिक रूप से, क्या आप अपने उपयोगकर्ताओं को शिक्षित कर सकते थे? D) मशीनों में आगे की तरफ पावर बटन क्यों नहीं थे?
अविस्मरणीयसुपोर्ट्समोनिका

यह प्रश्न एक ही उपयोगकर्ता द्वारा unix.stackexchange.com/questions/180488/… के पास-डुप्लिकेट है ।
अविस्मरणीयिडुपोर्ट्समोनिका

जवाबों:


16

में /etc/init.d/checkfs.shलाइन है if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline, तो उपलब्ध कराने forcefsckकर्नेल कमांड लाइन पर या एक पैदा /forcefsckशटडाउन होने पर फ़ाइल अगले रिबूट पर एक ऍफ़एससीके कारण चाहिए।

मैन्युअल fsck रन को रोकने के लिए , निम्नलिखित / आदि / डिफ़ॉल्ट / आरसीएस प्रविष्टि में किसी भी तरह की गड़बड़ी और परिवर्तन करके विकल्प के fsckसाथ त्रुटियों को स्वचालित रूप से ठीक करने का प्रयास करने के लिए कहें , संपादन के बाद इसे इस तरह दिखना चाहिए:-yyes

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

एक विकल्प (संदंश या FSCKFIX) दूसरे का अर्थ नहीं करता है।


क्या यह 'रन fsck मैन्युअल रूप से' स्थिति को संभालेगा?
इथ्रबुननी

वास्तव में, मैंने बहुत तेजी से पढ़ा, अपना उत्तर अपडेट किया।
परिसमापक ग्रेगिन

मैंने FSCKFIX = हां और मान दोनों में सेट किया है checkfs.sh। न ही मामले में जब मैं रिबूट किया गया था fsck चला (init 6 के माध्यम से)। मैं यहाँ कुछ मिस कर रहा हूँ।
लोकाचारिणी

कुछ भी न बदलें checkfs.sh, केवल संपादित करें / आदि / चूक / आरसीएस और touch /forcefsckरिबूट से पहले चलाएं । अंतिम कमांड को हर पुनरारंभ से पहले या आपके द्वारा बूट किए जाने के बाद चलाने की आवश्यकता है लेकिन fsck init स्क्रिप्ट किया जाता है।
परिमित ग्रेग्रीन

हम्म .. नसीब नहीं। मैं अभी भी 'बढ़ते अनियंत्रित फाइलसिस्टम' संदेश को देखता हूं जिसके बाद बहुत सारे 'डिलीट इनोड संदर्भित' त्रुटियां हैं। अब तक बदलते / आदि / fstab केवल एक चीज का कोई प्रभाव पड़ा है। मुझे यकीन नहीं है कि मैं ऐसा कर रहा हूं कि आपके सुझाव काम नहीं कर रहे हैं।
ethrbunny

8

fsck.mode=forceअपने बूटलोडर पर कर्नेल पैरामीटर जोड़ें । इस विकल्प को GRUB_CMDLINE_LINUX_DEFAULT=अंदर के चर में जोड़ें /etc/default/grub। मूल के रूप में, एक नया ग्रब कॉन्फ़िगरेशन फ़ाइल उत्पन्न करें:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

इस पैरामीटर forcefsckका माउंट पॉइंट के रूट के अंदर फ़ाइल बनाने जैसा ही प्रभाव होता है ।

checkfs.shस्क्रिप्ट का उपयोग करने का समाधान डेबियन पर बेहतर होगा, लेकिन अन्य डिस्ट्रोस पर काम नहीं करना चाहिए


7

मैं अपना उत्तर संपादित कर रहा हूं:

आदेश है:

sudo tune2fs -c 1 /dev/sdX

के अनुसार manpages -c तर्क के लिए tune2fs विभाजन के लिए mounts के उदाहरणों की संख्या की गणना करता है। इसलिए, हर बढ़ते उदाहरण के बाद एफएस की जांच करने के लिए 1 बल।

( http://man7.org/linux/man-pages/man8/tune2fs.8.html )


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