यदि आप एक आधुनिक लिनक्स डिस्ट्रो का उपयोग कर रहे हैं, तो आप निश्चित रूप से शटडाउन के दौरान "A stop job is running" संदेश का सामना करेंगे, और यह शटडाउन प्रक्रिया को 90 सेकंड तक रोक देगा। पता करें कि यह संदेश क्यों दिखाई देता है, और आप इसे कैसे कम कर सकते हैं।
यह एक सुरक्षा सुविधा है, बग नहीं
सबसे पहली चीज जो आपको जानने की जरूरत है वह यह है कि "A stop job is running" संदेश सिस्टम में निर्मित एक सुरक्षा सुविधा है, बग नहीं।
उबंटू, फेडोरा, और आर्क जैसे आधुनिक लिनक्स डिस्ट्रीब्यूशन बूट और शटडाउन प्रक्रियाओं को प्रबंधित करने के लिए Systemd का उपयोग करते हैं। जब आप शट डाउन पर क्लिक करते हैं, तो Systemd केवल पावर प्लग नहीं खींचता। यह हर चल रही सेवा और एप्लिकेशन को एक विनम्र सिग्नल भेजता है जिसे SIGTERM कहा जाता है। अधिकांश एप्लिकेशन, इस सिग्नल को प्राप्त करने के बाद, अपना डेटा सेव करते हैं, अपनी फाइलें बंद करते हैं, और ग्रेसफुली शट डाउन करते हैं।
हालांकि, कुछ सेवाओं को अपने कार्यों को पूरा करने के लिए अधिक समय की आवश्यकता होती है और वे सिग्नल को अनदेखा करती हैं। तभी आप चेतावनी संदेश देखते हैं। यह देरी आमतौर पर इसलिए होती है क्योंकि कुछ सेवाएं, जैसे नेटवर्क मैनेजर, कंटेनर, उपयोगकर्ता सत्र, या नेटवर्क माउंटेड ड्राइव, कनेक्शन बंद करने या डेटा को सुरक्षित रूप से सेव करने के लिए अतिरिक्त समय की आवश्यकता होती है।
कई लिनक्स उपयोगकर्ता "A Stop Job is Running" संदेश देखने पर सुधार खोजते हैं, यह मानते हुए कि कुछ टूट गया है। सच्चाई यह है कि Systemd डेवलपर्स ने इस व्यवहार को उद्देश्यपूर्ण तरीके से बनाया है। मूल रूप से, यह प्रतीक्षा अवधि, आमतौर पर 90 सेकंड, है जो Systemd सेवाओं को अपने लंबित कार्यों को पूरा करने के लिए देता है। यदि कोई सेवा कॉन्फ़िगर किए गए टाइमआउट के भीतर समाप्त नहीं होती है, तो Systemd इसे SIGKILL का उपयोग करके जबरदस्ती समाप्त कर देता है और शटडाउन प्रक्रिया जारी रखता है।
इस ग्रेसफुल शटडाउन के साथ, कई एप्लिकेशन अपना काम पूरा करते हैं, जैसे फाइलें बंद करना, डेटाबेस ट्रांजैक्शन पूरा करना, और फाइलसिस्टम को साफ़ तरीके से अनमाउंट करना। आप अभी भी प्रतीक्षा को हटा सकते हैं और शटडाउन को तेज़ बना सकते हैं, लेकिन ऐसा करने से हालिया राइट या ट्रांजैक्शन खोने, डेटाबेस या जर्नल फ़ाइलों को भ्रष्ट करने, या माउंटेड ड्राइव को अस्थिर स्थिति में छोड़ने का जोखिम भी बढ़ जाता है।
डिफ़ॉल्ट टाइमआउट को कम करना
90 सेकंड का डिफ़ॉल्ट प्रतीक्षा कई लिनक्स उपयोगकर्ताओं के लिए संतुलन बनाता है, विशेष रूप से पुराने हार्डवेयर का उपयोग करने वालों के लिए, क्योंकि यह अधिकांश सेवाओं के लिए अपने क्लीनअप रूटीन को पूरा करने के लिए पर्याप्त लंबा है। हालांकि, आधुनिक लैपटॉप या डेस्कटॉप सिस्टम चलाने वाले उपयोगकर्ताओं के लिए, 90 सेकंड अत्यधिक महसूस हो सकता है।
कारण जो भी हो, आप सिस्टम कॉन्फिगरेशन फ़ाइल को ट्वीक कर सकते हैं और टाइमआउट को कम करके systemd को बता सकते हैं कि अधूरी सेवाओं को अपने कार्यों को पूरा करने के लिए एक विशिष्ट संख्या में सेकंड दें।
शुरू करने के लिए, अपना टर्मिनल लॉन्च करें और अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके सिस्टम कॉन्फिगरेशन फ़ाइल को संपादित करें:
sudo nano /etc/systemd/system.conf
अगला, टाइमआउट वेरिएबल का पता लगाएं। आपको बहुत सारा टेक्स्ट दिखाई देगा, जो आपके सिस्टम के लिए वैश्विक सेटिंग्स का प्रतिनिधित्व करता है। #DefaultTimeoutStopSec=90s के समान एक लाइन देखें। लाइन की शुरुआत में हैश प्रतीक का मतलब है कि यह कमेंट आउट या अक्षम है। सिस्टम वर्तमान में अपने आंतरिक डिफ़ॉल्ट का उपयोग कर रहा है, जो 90 सेकंड होता है।
मान को संशोधित करने के लिए, पहले लाइन को सक्रिय करने के लिए हैश प्रतीक को हटाएं, फिर 90 सेकंड को अपनी पसंद के आधार पर एक छोटी अवधि में बदलें।
चेतावनी: इस मान को 0 पर सेट न करें। इसे 0 पर सेट करने से अनंत टाइमआउट बन जाता है, जिसका अर्थ है कि सिस्टम प्रक्रिया के रुकने का हमेशा के लिए इंतजार करेगा। यह वही है जो हम नहीं चाहते। एक मध्य-सीमा मान (20-30 सेकंड) कई उपयोगकर्ताओं के लिए एक व्यावहारिक समझौता है।
एक बार जब आप पूरा कर लें, तो सेव करें और एडिटर से बाहर निकलें। परिवर्तनों को लागू करने के लिए, आपको आमतौर पर रीबूट करना होगा। चूंकि समस्या शटडाउन के दौरान होती है, आप आखिरी बार लंबी प्रतीक्षा देख सकते हैं। अगले बूट के बाद, नई सेकंड सीमा प्रभावी होगी।
नोट: कुछ मामलों में, आपको इसे काम करने के लिए #DefaultDeviceTimeoutSec=90s को भी सक्षम करने की आवश्यकता हो सकती है।
जब टाइमआउट किसी समस्या का संकेत दे सकता है
अधिकांश मामलों में, एक स्टॉप जॉब टाइमआउट सामान्य व्यवहार है। हालांकि, यह कभी-कभी एक अंतर्निहित समस्या की ओर इशारा कर सकता है, खासकर यदि वही सेवा बार-बार शटडाउन में देरी करती है। एक नेटवर्क माउंट अनुपलब्ध हो सकता है, एक डेमॉन गलत कॉन्फ़िगर हो सकता है, या कोई सेवा शटडाउन सिग्नल का ठीक से जवाब नहीं दे रही हो सकती है।
यदि आप देखते हैं कि शटडाउन सेकंड के बजाय मिनट ले रहे हैं, या वही सेवा हर बार टाइमआउट होती है, तो इसकी जांच करना उचित है। कभी-कभार होने वाली देरी आमतौर पर हानिरहित होती है, लेकिन लगातार होने वाली देरी सुझाव देती है कि कुछ ध्यान देने योग्य है।
धीमे शटडाउन से रीबूट करने के बाद लॉग्स की जांच करके देरी का कारण बनने वाली सेवा की पहचान करें:
journalctl -b -1 -e
यह कमांड पिछले बूट से लॉग्स प्रदर्शित करती है और अंत में जाती है। आप चेतावनियों, टाइमआउट संदेशों, या उन सेवाओं को देखने के लिए ऊपर स्क्रॉल कर सकते हैं जिन्हें सिस्टम द्वारा जबरदस्ती रोका गया था।
इसके अलावा, आप वार्निंग लेवल के संदेशों को देखकर चीजों को सीमित कर सकते हैं:
journalctl -b -1 -p warning
एक और उपयोगी जांच यह Systemd विश्लेषण कमांड चलाना है:
systemd-analyze blame
हालांकि यह कमांड स्टार्टअप समय पर केंद्रित है, जो सेवाएं शुरू होने में धीमी होती हैं वे अक्सर शटडाउन के दौरान समान व्यवहार करती हैं। कुछ अन्य सामान्य सेवाएं जो स्टॉप जॉब संदेशों को ट्रिगर करती हैं उनमें शामिल हैं:
- नेटवर्क सेवाएं
- रिमोट फाइलसिस्टम जैसे NFS या SMB
- डेटाबेस सर्वर
- कंटेनर और वर्चुअल मशीन मैनेजर
- एक्सटर्नल ड्राइव, और ऑटोमाउंट इकाइयां
नेटवर्क-आधारित माउंट विशेष रूप से देरी के लिए प्रवण होते हैं यदि कनेक्शन अस्थिर है या अब उपलब्ध नहीं है। इसके अलावा, शटडाउन टाइमआउट को कम करने से शटडाउन तेज़ महसूस हो सकते हैं, लेकिन यह अंतर्निहित समस्या को ठीक नहीं करता है। यदि कोई सेवा लगातार शटडाउन में देरी करती है, तो मूल कारण को संबोधित करने से बेहतर दीर्घकालिक परिणाम मिलते हैं।
अंतिम विचार
लिनक्स आपको अपने सिस्टम पर उच्च स्तर का नियंत्रण देता है, जिसमें यह भी शामिल है कि यह जिद्दी सेवाओं के बंद होने के लिए कितनी देर प्रतीक्षा करता है। आप पृष्ठभूमि एप्लिकेशन को भी प्रबंधित कर सकते हैं और बूट और शटडाउन दोनों समय को बेहतर बनाने के लिए अनावश्यक सेवाओं को अक्षम कर सकते हैं।