क्या लिनक्स को बंद करने से पहले सिंक (8) का निष्पादन अभी भी आवश्यक है?


19

मैं अभी भी देखता हूं कि लोग sync; sync; sync; sleep 30; haltलिनक्स को बंद करने या रिबूट करने के बारे में बात करते समय भस्म का उपयोग करने की सलाह देते हैं ।

मैं अपनी स्थापना के बाद से लिनक्स चला रहा हूं और हालांकि बीएसडी 4.2 / 4.3 और सनोस 4 दिनों में यह अनुशंसित प्रक्रिया थी, मैं याद नहीं कर सकता कि मुझे कम से कम पिछले दस वर्षों से ऐसा करना था, जिसके दौरान मैं शायद लिनक्स के शटडाउन / रिबूट के माध्यम से चला गया शायद हजारों बार।

मुझे संदेह है कि यह उन दिनों से एक अतिवाद है कि कर्नेल एकल-उपयोगकर्ता मोड (जैसे / tmp) के दौरान भी रूट फाइल सिस्टम और अन्य महत्वपूर्ण फाइल सिस्टम को अनमाउंट और सिंक नहीं कर सकता है, और इसलिए इसे स्पष्ट रूप से बताने के लिए आवश्यक था डिस्क में जितना डेटा हो सकता है।

इन दिनों, कर्नेल स्रोत में संबंधित कोड को अभी तक खोजे बिना ( http://lxr.linux.no और google के माध्यम से खुदाई ), मुझे संदेह है कि कर्नेल स्मार्ट रूप से रूट फाइल सिस्टम को साफ करने के लिए पर्याप्त है और फाइल सिस्टम काफी स्मार्ट है एक सामान्य shutdown/ reboot/ के दौरान खुद को अनमाउंट करने से पहले एक सिंक (2) को प्रभावी ढंग से करने के लिए poweorff

"sync; sync; sync"चरम मामलों में केवल आवश्यक है जहां फाइल सिस्टम नहीं अनमाउंट सफाई से (उदाहरण के लिए भौतिक डिस्क विफलता) या सिस्टम स्थिति में है कि केवल एक सीधा रिबूट (8) के लिए मजबूर वह अपने फ्रीज से बाहर निकलना होगा (जैसे लोड भी है इसे शटडाउन कमांड को शेड्यूल करने के लिए उच्च)।

मैं भी syncहटाने योग्य उपकरणों को अनमाउंट करने से पहले कभी भी प्रक्रिया नहीं करता हूं , और कभी भी कोई समस्या नहीं आती है।

एक अन्य उदाहरण - एक्सएमएन को डोमू से shutdownकमांड भेजने की अनुमति है, यह एक "क्लीन शटडाउन" माना जाता है, बिना किसी को लॉगिन और जादुई टाइप के sync; sync; sync

क्या मैं सही हूं या मैं कुछ हजारों सिस्टम शटडाउन के लिए भाग्यशाली था?


पढ़ने / लिखने के रूप में एक पठनीय फ़ाइल सिस्टम के बारे में क्या? मैंने रूटफोन्स को पठनीय रूप से माउंट किया है और मैं इसे इस कमांड के साथ पढ़ने / लिखने के रूप में रिमूव करता हूं: माउंट-रे रिमाउंट, आरडब्ल्यू / और फिर जब मैंने रूटफ्स को बदल दिया है तो मैं माउंट -o रिमाउंट, आरओ / रन करता हूं, लेकिन मुझे कुछ समस्याएं दिखाई देती हैं जब मैं चेक एफएस fsck के साथ। क्या दूसरी कमांड कॉल करने से पहले SYNC को आसानी से बढ़ते हैं?

जवाबों:


18

कारण लोग sync; syncएक haltसे पहले चलेंगे क्योंकि haltकमांड पुराने linuxes पर सिस्टम को सफाई से बंद नहीं करेगा। SYSVr4 सिस्टम पर ऐसा करने का सही तरीका हमेशा init को एक अलग रन स्तर पर ले जाना है।

BSD और SunOS 4 SYSVr4 ऑपरेटिंग सिस्टम नहीं हैं, जिसके कारण वे भिन्न हैं। Solaris (SunOS 5) SYSVr4 है और Linux SYSVr4 मानक के बिट्स को चुनता है जिसका वह उपयोग करना चाहता है।

हाल्ट का उपयोग करना वास्तव में अधिकांश यूनिक्स (लिनक्स में से एक होने के नाते) पर इसे करने का एक बहुत बुरा तरीका है क्योंकि यह वास्तव में init स्क्रिप्ट के माध्यम से प्रक्रियाओं को रोकने और डिस्क को अनमाउंट करने जैसी चीजों को करने के लिए नहीं चलता है - यह सिर्फ प्रोसेसर को रोकता है।

यदि आप गारंटी दे सकते हैं कि आप कभी भी, कभी भी लिनक्स की तुलना में किसी भी प्रकार की UNIX प्रणाली का उपयोग नहीं करेंगे , तो आप उपयोग कर सकते हैं halt- यदि कोई ऐसा मौका है जो आप अन्य UNIXes का उपयोग करने जा रहे हैं, तो मैं उपयोग करने की आदत डालने की सलाह दूंगा init _runlevel_या shutdown

shutdownआदेश वास्तव में बताता initप्रक्रिया अपनी दौड़ स्तर बदलने के लिए रन स्तर - तो init करने में तो कश्मीर * init स्क्रिप्ट और कि रन स्तर के साथ जुड़े एस * init स्क्रिप्ट में से प्रत्येक को चलाने के लिए आगे बढ़ते हैं। रन-लेवल 0 में स्क्रिप्ट्स में से एक फाइल सिस्टम की अनमाउंटिंग करता है।

लिनक्स पर haltकमांड केवल कमांड को कॉल करता है shutdownजब तक कि रन स्तर पहले से 0 (शट डाउन) या 6 (रिबूटिंग) वैसे भी है ; इसलिए वहां कोई नुकसान नहीं हुआ।

फ़ाइल सिस्टम का उपयोग करने से रोकने का कार्य umountडिस्क को अनमाउंट करने से पहले डेटा को डिस्क में सिंक करेगा।

यदि आप sync; sync; haltलिनक्स पर चल रहे हैं, तो आप फाइलसिस्टम स्थिति के साथ ठीक होंगे क्योंकि डेवलपर्स ने सुनिश्चित किया है कि सही काम haltकरता है; हालाँकि इसका उपयोग करना अधिक सही होगा:shutdown now


स्पष्टीकरण के लिए धन्यवाद। बस स्पष्ट करने के लिए कि आप क्या कह रहे हैं - "डेवलपर्स ने सुनिश्चित किया है कि रुका हुआ सही काम करता है" का अर्थ है कि "पड़ाव" को "सिंक" भी कहते हैं या यह उचित इनिट स्क्रिप्ट चलाता है जिसे अंततः "सिंक" कहते हैं? पहले से ही एकल-उपयोगकर्ता मोड पर होने के बारे में क्या है और सिर्फ "पड़ाव" कह रहे हैं? क्या मैं अपनी धारणा में सही हूं कि लिनक्स कर्नेल सिर्फ इतना स्मार्ट है कि वास्तव में अचानक बंद न हो, लेकिन बंद करने से पहले सभी फाइल सिस्टम को अनमाउंट कर देगा?
आमोस शापिरा

1
haltकॉल shutdownजो कॉल umountकरता है जो एक सिंक करता है।
डेवग

धन्यवाद डेवजी। तो आप जो कह रहे हैं कि यह सब उपयोगकर्ता-स्तर पर होता है और कर्नेल अपने आप ही फाइल सिस्टम को umount और सिंक नहीं करेगा? किसी भी स्थिति में, यह "सिंक; शटडाउन" समारोह आज बेमानी है।
आमोस शापिरा

7

कई syncकॉल का उपयोग ओएस और डिस्क को लिखने की कतारों को फ्लश करने की अनुमति देने के लिए किया गया था। "sync; sync; sync"यह उपयोगी नहीं माना जाता था; "sync<cr> sync<cr> sync<cr"आपके ASR-33 ने गाड़ी के रिटर्न / न्यूलाइन को पर्याप्त विलंब प्रदान करते हुए एक और देरी की। हाल्ट ने हमेशा कॉल सिंक किया; सवाल यह था कि क्या सत्ता से हटने से पहले कतारों को लहराने के लिए पर्याप्त समय होगा।

मूल पोस्टर, sync; sleep 30जो इरादा था, उसे ध्यान में रखते हुए अधिक है।


7

मैं केवल यह कह सकता हूं कि आप syncकई बार क्यों जारी करेंगे । कमांड फ्लश को डिस्क पर शेड्यूल करता है लेकिन वास्तविक फ्लश पूरा होने से पहले वापस आ जाता है। बाद में कोई भी syncआदेश तब तक ब्लॉक रहेगा जब तक कि किसी अन्य फ्लश और बाहर निकलने से पहले कोई भी बकाया फ्लश चालू न हो। इसलिए, sync; syncएक तुल्यकालिक फ्लश सुनिश्चित करता है। आपको इसे 2 बार से अधिक करने की आवश्यकता नहीं है, न ही sleepमिश्रण में लाना है ।


5

आप में से वे सभी बता रहे हैं कि "सिंक; सिंक; सिंक" का कोई उद्देश्य नहीं है जिससे आपकी उम्र का पता चल सके।

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

'सिंक; सिंक; सिंक' कमांड एक तरीका था कि इन पुरानी टेप मशीनों को अंत तक (शटडाउन से पहले) सभी तरह से खुद को रिवाइंड करने के लिए कहा जा सकता था - उनके पास बोर्ड पर फर्मवेयर था जो सिंक सेमी को प्राप्त करता था (जैसे सभी अच्छे फाइलसिस्टम करते हैं), और अगर यह लगभग तुरंत दो और सिंक बफर कमांड द्वारा पीछा किया गया था, तो टेप ड्राइव खुद को "टेप को रिवाइंड करें और इसे अनमाउंट करें" इसका मतलब होगा। टेप ड्राइव को फिर से बताने का कोई तरीका नहीं था, इस विधि से परे, और यह अटक गया .. यह आदत तब शब्द में पारित हुई जब हार्ड ड्राइव अधिक उपलब्ध हो गए - हम पुराने पुराने ऑपरेटरों को केवल वास्तविक नहीं बनाते ( ) हमारी मांसपेशियों की स्मृति आप जानते हैं! मेरा मानना ​​है कि टेप के कम होने और हार्ड-ड्राइव के अधिक उपलब्ध हो जाने के बाद इसे जल्द ही लोकगीत का दर्जा हासिल हो गया, लेकिन टेप ड्राइव वाले हममें से अभी भी इसके उपयोग हैं।


3
टेप चरित्र उपकरण हैं। ब्लॉक डिवाइस पर "माउंट" संचालित होता है। मैं वहाँ गया है (वैक्स 11/750 पर "डंप" चल रहा है बीएसडी 4.2 के साथ मध्य 80 में) और ऐसा कुछ भी नहीं था और टेप डिवाइस पर "सिंक" चल रहा था। यदि आप इसे एक डिवाइस के नाम के रूप में खोलते हैं और जहां आप इसे किसी अन्य के साथ खोला था, तो इसे ऑटो-रिवाइंड करने के लिए टेप ऑटो-रीवाउंड होगा, और यदि आपको करना था, तो आप "mt" का उपयोग करके स्पष्ट कमांड भेज सकते हैं।
आमोस शापिरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.