मैं बूट समय पर गैर-संवादात्मक रूप से fsck कैसे चला सकता हूं?


19

मेरे पास 1500 मील दूर डेटासेंटर में एक हेडलेस उबन्टु 12.04 सर्वर है। दो बार अब रिबूट प्रणाली पर निर्णय लिया कि इसे फस्क करना था। दुर्भाग्य से उबंटू इंटरैक्टिव मोड में fsck चला गया, इसलिए मुझे अपने डेटासेंटर पर किसी से पूछने, कंसोल में प्लग करने और वाई कुंजी दबाने के लिए कहना पड़ा। मैं इसे कैसे सेट करूं ताकि fsck बूट ( -yया -pउर्फ -a) झंडे के साथ गैर-इंटरैक्टिव मोड में चला जाए ?

अगर मैं उबंटू की बूट प्रक्रिया को सही ढंग से समझता हूं, तो यह इनवैलिड को माउंट करता है जो बदले में fsck को आमंत्रित करता है। हालाँकि मुझे यह देखने का कोई तरीका नहीं है कि fsck को कैसे कॉन्फ़िगर किया जाए। क्या यह संभव है?

(एक सुझाव को दूर करने के लिए; मैं जानता हूं कि मैं tune2fs -i 0 -c 0समय-समय पर होने वाली फॉक्स को रोकने के लिए उपयोग कर सकता हूं। इससे थोड़ी मदद मिल सकती है, लेकिन मुझे सिस्टम को वापस आने की कोशिश करने की आवश्यकता है, भले ही यह एक वास्तविक कारण था, क्योंकि एक बिजली की विफलता के बाद कहें ।)

अनुवर्ती प्रश्नों के जवाब में, यहाँ मेरे / etc / fstab के प्रासंगिक विवरण हैं। मुझे विश्वास नहीं होता कि मैंने यह सब उबंटू में वहाँ से संपादित किया है।

UUID=3515461e-d425-4525-a07d-da986d2d7e04 /               ext4    errors=remount-ro 0       1
UUID=90908358-b147-42e2-8235-38c8119f15a6 /boot           ext4    defaults        0       2
UUID=01f67147-9117-4229-9b98-e97fa526bfc0 none            swap    sw              0       0

1
यह सवाल और इसमें शामिल उत्तर /etc/default/rcS2019 में वास्तव में मान्य नहीं हैं, Ubuntu 16 और Ubuntu 18 अब systemd का उपयोग कर रहे हैं। मैं systemd के लिए पूरी कहानी नहीं जानता, लेकिन fsck.repairविन्यास / कर्नेल कमांड लाइन विकल्प प्रासंगिक लगता है। डॉक्स वर्तमान में इसका डिफ़ॉल्ट है preen, जिसका अर्थ है -p। यह भी करने के लिए सेट किया जा सकता है yesके लिए -y/etc/default/grubइसे सेट करने का स्थान हो सकता है। अगर कोई और जानकार एक आधुनिक प्रणालीगत उत्तर प्रदान करेगा तो मैं आभारी रहूँगा।
नेल्सन

जवाबों:


29

मैं जो सेटिंग देख रहा हूं वह / etc / default / rcS , में है FSCKFIX=yes। इसका अर्थ है "बूट के दौरान विसंगतियों के साथ स्वचालित रूप से फाइलसिस्टम की मरम्मत करना" और -yझंडे के साथ चलाने का कारण बनता है । यह noमेरे दोनों Ubuntu सिस्टम में सेट किया गया था ।

यहां तक ​​कि जब सेट करने के लिए no, बूट समय fsck अभी भी कुछ हद तक गैर-सक्रिय है। माउंटल के साथ fsck चलाता है , जिसका -aएक पर्याय है -p, जिसका अर्थ है "स्वचालित रूप से किसी भी फाइलसिस्टम समस्याओं को ठीक करना जो मानव हस्तक्षेप के बिना सुरक्षित रूप से तय किया जा सकता है"। -pयदि कोई असुरक्षित फ़िक्स बनाया जाना है तो स्पष्ट रूप से इंटरेक्टिव मोड में चला जाता है। पूरी तरह से स्वचालित रूप से चलाने के लिए, आपको आवश्यकता है -yया FSCKFIX=yes

यहां माउंटआल्ट.के से संबंधित बिट कोड दिया गया है

if (fsck_fix || mnt->fsck_fix) {
  NIH_MUST (nih_str_array_add (&args, NULL, &args_len, "-y"));
} else {
  NIH_MUST (nih_str_array_add (&args, NULL, &args_len, "-a"));
}

साथ जोड़कर systemd ही प्राप्त किया जा सकता हाल OSes के लिए fsck.repair=yesपरम करने GRUB_CMDLINE_LINUX_DEFAULTमें/etc/default/grub
Maxxer

2

Ubuntu 15,16,17+ के लिए FSCKFIX मान सेटिंग lib / init / vars.sh में स्थित है

इस grep -r FSCKFIX * 2>/dev/nullपर जुर्माना लगाने के लिए कमांड का उपयोग कर सकते हैं ।


1
धन्यवाद! मैं सकारात्मक नहीं हूँ, लेकिन उस फ़ाइल में दिए गए सुझाव आपको सेटिंग को अभी भी कॉन्फ़िगर करना चाहिए /etc/default/rcS/lib/init/vars.shके लिए एक डिफ़ॉल्ट है, FSCKFIXलेकिन फिर स्रोत /etc/default/rcSजो इसे ओवरराइड कर सकते हैं। OTOH एक नए स्थापित उबंटू 18 प्रणाली में एक rcSफाइल नहीं थी ।
नेल्सन

1

सुनिश्चित करें कि आपके पास कोई झंडे नहीं हैं जो fstab में इसका कारण बन सकते हैं, और अपनी init स्क्रिप्ट की जांच कर सकते हैं। ('Fsck' के लिए अपने init स्क्रीप्स को ट्राई करने की कोशिश करें, जहाँ यह पाया जाए कि यह कहाँ उपयोग किया गया है) मेरा सिस्टम fsck नॉन-इंटरएक्टिव चलता है, इसलिए यहाँ मेरे fstab और मेरे / etc / init / माउंटिंग स्क्रिप्ट की एक प्रति है जो आपकी तुलना करने के लिए है।

$ cat /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
UUID=acbe3514-33a3-4170-b1be-df7b8460a49a /               ext4    errors=remount-ro 0       1
UUID=d361f696-7abc-11e1-9043-5711de71ade6 /home           ext4    defaults        0       2
UUID=213e032c-fce9-4e1b-9d64-0779f0db4208 none            swap    sw              0       0

स्निपेट से / आदि / init / माउंटल

script
    . /etc/default/rcS
    [ -f /forcefsck ] && force_fsck="--force-fsck"
    [ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"

    # set $LANG so that messages appearing in plymouth are translated
    if [ -r /etc/default/locale ]; then
        . /etc/default/locale
        export LANG LANGUAGE LC_MESSAGES LC_ALL
    fi

    exec mountall --daemon $force_fsck $fsck_fix
end script

1
सहायता के लिए धन्यवाद। क्या आप मुझे बता सकते हैं कि grep FSCKFIX /etc/default/rcSआपके सिस्टम में क्या है?
नेल्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.