और अब, systemd जवाब।
आप अपने प्रश्न के टैग के अनुसार, Red Hat Enterprise Linux का उपयोग कर रहे हैं। संस्करण 7 के बाद से, जिसने सिस्टमड का उपयोग किया है। सिस्टमड की दुनिया के लिए कोई भी अन्य उत्तर सही नहीं है; और न ही आपके प्रश्न में कुछ मान्यताएँ हैं।
- रनलेवल्स के बारे में भूल जाओ ; वे मौजूद हैं, लेकिन केवल संगतता के रूप में। सिस्टमड दस्तावेज़ीकरण बताता है कि अवधारणा "अप्रचलित" है। यदि आप एक सिस्टमड ऑपरेटिंग सिस्टम पर इस सामान को सीखना शुरू कर रहे हैं, तो वहां से शुरू न करें।
- उस मैनुअल पेज के बारे में भूल जाते हैं जिसे मार्सेलम ने उद्धृत किया था; यह बिल्कुल सही टूलसेट से नहीं है, और यह किसी अन्य टूलसेट के कमांड का वर्णन है, जो सिस्टमड के लिए गलत है। यह
haltवैन स्मरनबर्ग "सिस्टम 5" initउपयोगिताओं से कमांड के लिए एक है ।
- उन कथनों को अनदेखा करें जो
/sbin/haltएक प्रतीकात्मक कड़ी हैं /sbin/reboot; यह सिस्टमड के साथ सच नहीं है। कोई अलग rebootकार्यक्रम नहीं है ।
- उन बयानों को अनदेखा करें जो कमांड-लाइन तर्कों के साथ एक कार्यक्रम शुरू करते हैं
haltया ; वे भी systemd के साथ सच नहीं हैं। कोई अलग कार्यक्रम नहीं है ।rebootshutdownshutdown
प्रत्येक सिस्टम प्रबंधन टूलसेट में इन उपयोगिताओं का अपना संस्करण है। systemd, upstart, nosh , van Smoorenburg init, और BSD initसभी अपने स्वयं haltके poweroff, और इसके आगे हैं। प्रत्येक पर उनके यांत्रिकी थोड़ा अलग हैं। तो उनके मैनुअल पेज हैं।
Systemd टूलसेट में halt, poweroff,reboot , telinit, और shutdownकर रहे हैं सभी सांकेतिक लिंक करने के लिए /bin/systemctl। वे सभी पश्चगामी संगतता शिम हैं, जो कि सिस्टमड के प्राथमिक कमांड-लाइन इंटरफ़ेस को लागू करने के लिए बस आशुलिपि हैं systemctl:। वे सभी एक ही कार्यक्रम के लिए (और वास्तव में) नक्शे पर हैं । (सम्मेलन द्वारा, शेल यह बताता है कि किस नाम से इसे लागू किया गया है।)
लक्ष्य, रनलेवल नहीं
उन आदेशों में से अधिकांश एक विशेष लक्ष्यsystemctl को अलग करने के लिए सिस्टमड, का उपयोग करने के लिए शॉर्टहैंड हैं । अलगाव को मैनुअल पेज (qv) में समझाया गया है , लेकिन इस उत्तर के प्रयोजनों के लिए, लक्ष्य शुरू करने और किसी अन्य को रोकने के बारे में सोचा जा सकता है। सिस्टमड में प्रयुक्त मानक लक्ष्य (8) मैनुअल पेज पर सूचीबद्ध हैं ।systemctlsystemd.special
bootupसिस्टम टूलसेट में 7 (7) मैनुअल पेज पर आरेख , विशेष रूप से अंतिम एक, यह दर्शाता है कि यहां तीन "अंतिम" लक्ष्य हैं जो प्रासंगिक हैं:
halt.target- एक बार जब सिस्टम इस लक्ष्य को पूरी तरह से अलग करने की स्थिति में पहुंच गया है, तो इसे reboot(RB_HALT_SYSTEM)सिस्टम कॉल कहा जाएगा । कर्नेल ने एक ROM मॉनिटर प्रोग्राम में प्रवेश करने का प्रयास किया होगा, या बस CPU को रोक दिया था (ऐसा करने के लिए जो भी तंत्र उपयुक्त हो) का उपयोग करना।
reboot.target- एक बार जब सिस्टम इस लक्ष्य को पूरी तरह से अलग करने की स्थिति में पहुंच गया है, तो इसे reboot(RB_AUTOBOOT)सिस्टम कॉल (या मैजिक कमांड लाइन के बराबर) कहा जाएगा। कर्नेल ने रीबूट को ट्रिगर करने का प्रयास किया होगा।
poweroff.target- एक बार जब सिस्टम इस लक्ष्य को पूरी तरह से अलग करने की स्थिति में पहुंच गया है, तो इसे reboot(RB_POWER_OFF)सिस्टम कॉल कहा जाएगा । कर्नेल ने यदि संभव हो तो सिस्टम से बिजली निकालने का प्रयास किया होगा।
ये ऐसी चीजें हैं जिनके बारे में आपको अंतिम प्रणाली के रूप में सोचना चाहिए, न कि स्तरों को चलाना। आरेख से ध्यान दें कि सिस्टमड लक्ष्य प्रणाली खुद ऐसी चीजों को एनकोड करती है, जो अन्य प्रणालियों में निहित हैं, स्पष्ट के बजाय निहित: जैसे कि यह धारणा कि इनमें से प्रत्येक अंतिम लक्ष्य लक्ष्य को शामिल करता है shutdown.target, ताकि कोई ऐसी सेवाओं का वर्णन करे जो डाउनडाउन से पहले बंद कर दिया जाना चाहिए उन्हें होने के साथ संघर्षshutdown.target लक्ष्य।
systemctlsystemd-logindजब कॉल करने वाला उपयोगकर्ता सुपरयुसर नहीं है, तो अनुरोध भेजने का प्रयास करता है । यह विलंबित शटडाउन से भी अधिक गुजरता है systemd-shutdownd। और कुछ आशुलिपि wallसूचनाएं ट्रिगर करती हैं । एक तरफ वे जटिलताएँ, जो इस उत्तर को कई गुना लंबा बना देती हैं, यह मानते हुए कि आप वर्तमान में सुपरसियर हैं और एक निर्धारित कार्रवाई का अनुरोध नहीं कर रहे हैं:
systemctl isolate halt.target आशुलिपि है:
shutdown -H now
systemctl halt
- सादा अनगढ़
halt
systemctl isolate reboot.target आशुलिपि है:
shutdown -r now
telinit 6
systemctl reboot
- सादा अनगढ़
reboot
systemctl isolate poweroff.target आशुलिपि है:
shutdown -P now
telinit 0
shutdown now
systemctl poweroff
- सादा अनगढ़
poweroff
systemctl isolate rescue.target आशुलिपि है:
telinit 1
systemctl rescue
systemctl isolate multi-user.target आशुलिपि है:
telinit 2
telinit 3
telinit 4
systemctl isolate graphical.target आशुलिपि है:
विभिन्न भिन्न कमांड-लाइन सिंटैक्स को पार्स करने के बाद, ये सभी अंततः systemctlप्रोग्राम के अंदर समान कोड पथ में समाप्त हो जाते हैं ।
टिप्पणियाँ:
- विकल्प-कम का पारंपरिक व्यवहार एकल-उपयोगकर्ता मोड
shutdown now पर स्विच करने के लिए किया गया है । यह सिस्टमड के साथ ऐसा नहीं है। rescue.target- एकल-उपयोगकर्ता मोड को सिस्टम मोड में रेस्क्यू मोड का नाम दिया जा रहा है - shutdownकमांड के साथ उपलब्ध नहीं है ।
telinit वास्तव में पूरी तरह से फाइल सिस्टम में उन सभी और प्रतीकात्मक लिंक को अनदेखा करता है, जिनका मैनुअल पेज वर्णन करते हैं। उपरोक्त उल्लिखित मैपिंग को एक तालिका में, प्रोग्राम में हार्डवेर किया गया है ।runlevelN.targetdefault.targetsystemctl
- systemd में वर्तमान रन स्तर की कोई धारणा नहीं है । यदि आप रन-लेवल N में हैं, तो इन कमांड्स का संचालन सशर्त नहीं है ।
--forceकरने के लिए विकल्प halt, rebootऔर poweroffआदेशों को यह कहते हुए एक ही है --force --forceकरने के लिए systemctl halt, systemctl rebootऔर systemctl poweroffआदेशों। यह सीधे systemctlकॉल करने का प्रयास करता है reboot()। आम तौर पर यह सिर्फ लक्ष्यों को अलग करने की कोशिश करता है।
telinitके रूप में ही नहीं है init। वे सिस्टम वर्ल्ड में अलग-अलग प्रोग्राम हैं, बाद वाले systemdप्रोग्राम के लिए दूसरा नाम है, प्रोग्राम के लिए नहीं systemctl। यह systemdकार्यक्रम किसी भी वैन स्मरनबर्ग संगतता के साथ अनिवार्य रूप से संकलित नहीं है, और कुछ सिस्टमड ऑपरेटिंग सिस्टमों पर शिकायत करता है कि यदि कोई प्रयास करता है तो गलत तरीके से लागू किया जाएगा ।init N
आगे की पढाई