और अब, systemd जवाब।
आप अपने प्रश्न के टैग के अनुसार, Red Hat Enterprise Linux का उपयोग कर रहे हैं। संस्करण 7 के बाद से, जिसने सिस्टमड का उपयोग किया है। सिस्टमड की दुनिया के लिए कोई भी अन्य उत्तर सही नहीं है; और न ही आपके प्रश्न में कुछ मान्यताएँ हैं।
- रनलेवल्स के बारे में भूल जाओ ; वे मौजूद हैं, लेकिन केवल संगतता के रूप में। सिस्टमड दस्तावेज़ीकरण बताता है कि अवधारणा "अप्रचलित" है। यदि आप एक सिस्टमड ऑपरेटिंग सिस्टम पर इस सामान को सीखना शुरू कर रहे हैं, तो वहां से शुरू न करें।
- उस मैनुअल पेज के बारे में भूल जाते हैं जिसे मार्सेलम ने उद्धृत किया था; यह बिल्कुल सही टूलसेट से नहीं है, और यह किसी अन्य टूलसेट के कमांड का वर्णन है, जो सिस्टमड के लिए गलत है। यह
halt
वैन स्मरनबर्ग "सिस्टम 5" init
उपयोगिताओं से कमांड के लिए एक है ।
- उन कथनों को अनदेखा करें जो
/sbin/halt
एक प्रतीकात्मक कड़ी हैं /sbin/reboot
; यह सिस्टमड के साथ सच नहीं है। कोई अलग reboot
कार्यक्रम नहीं है ।
- उन बयानों को अनदेखा करें जो कमांड-लाइन तर्कों के साथ एक कार्यक्रम शुरू करते हैं
halt
या ; वे भी systemd के साथ सच नहीं हैं। कोई अलग कार्यक्रम नहीं है ।reboot
shutdown
shutdown
प्रत्येक सिस्टम प्रबंधन टूलसेट में इन उपयोगिताओं का अपना संस्करण है। systemd, upstart, nosh , van Smoorenburg init
, और BSD init
सभी अपने स्वयं halt
के poweroff
, और इसके आगे हैं। प्रत्येक पर उनके यांत्रिकी थोड़ा अलग हैं। तो उनके मैनुअल पेज हैं।
Systemd टूलसेट में halt
, poweroff
,reboot
, telinit
, और shutdown
कर रहे हैं सभी सांकेतिक लिंक करने के लिए /bin/systemctl
। वे सभी पश्चगामी संगतता शिम हैं, जो कि सिस्टमड के प्राथमिक कमांड-लाइन इंटरफ़ेस को लागू करने के लिए बस आशुलिपि हैं systemctl
:। वे सभी एक ही कार्यक्रम के लिए (और वास्तव में) नक्शे पर हैं । (सम्मेलन द्वारा, शेल यह बताता है कि किस नाम से इसे लागू किया गया है।)
लक्ष्य, रनलेवल नहीं
उन आदेशों में से अधिकांश एक विशेष लक्ष्यsystemctl
को अलग करने के लिए सिस्टमड, का उपयोग करने के लिए शॉर्टहैंड हैं । अलगाव को मैनुअल पेज (qv) में समझाया गया है , लेकिन इस उत्तर के प्रयोजनों के लिए, लक्ष्य शुरू करने और किसी अन्य को रोकने के बारे में सोचा जा सकता है। सिस्टमड में प्रयुक्त मानक लक्ष्य (8) मैनुअल पेज पर सूचीबद्ध हैं ।systemctl
systemd.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
लक्ष्य।
systemctl
systemd-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.target
default.target
systemctl
- systemd में वर्तमान रन स्तर की कोई धारणा नहीं है । यदि आप रन-लेवल N में हैं, तो इन कमांड्स का संचालन सशर्त नहीं है ।
--force
करने के लिए विकल्प halt
, reboot
और poweroff
आदेशों को यह कहते हुए एक ही है --force --force
करने के लिए systemctl halt
, systemctl reboot
और systemctl poweroff
आदेशों। यह सीधे systemctl
कॉल करने का प्रयास करता है reboot()
। आम तौर पर यह सिर्फ लक्ष्यों को अलग करने की कोशिश करता है।
telinit
के रूप में ही नहीं है init
। वे सिस्टम वर्ल्ड में अलग-अलग प्रोग्राम हैं, बाद वाले systemd
प्रोग्राम के लिए दूसरा नाम है, प्रोग्राम के लिए नहीं systemctl
। यह systemd
कार्यक्रम किसी भी वैन स्मरनबर्ग संगतता के साथ अनिवार्य रूप से संकलित नहीं है, और कुछ सिस्टमड ऑपरेटिंग सिस्टमों पर शिकायत करता है कि यदि कोई प्रयास करता है तो गलत तरीके से लागू किया जाएगा ।init N
आगे की पढाई