क्या अब भी सिस्टम को रनवे के बारे में पता है?


17

क्या सिस्टमडेल में अभी भी रनवे की अवधारणा है? उदाहरण के लिए यह उपयोग करने के लिए व्यर्थ है telinit <number>?



मैं नीचे दिए गए उत्तर के बारे में पता नहीं है, लेकिन RHEL में / Centos 7.6 init 1या init 3या init 5या init 6या init 0या runlevelअभी भी व्यवहार करते हैं, क्योंकि वे हमेशा किया है, और कहा कि सभी मैं के बारे में परवाह है। बहुत आसान तो वाक्य रचनाsystemctl blabla blabla.blabla
रॉन

जवाबों:


14

SystemD रन-लेवल कम-डाउन

SystemD (anemon) के भीतर, रनवे को "लक्ष्य" के रूप में उजागर किया जाता है। अवधारणा अभी भी है, लेकिन आपकी आवश्यकता के लिए वांछित परिणाम का उत्पादन करने के लिए वर्कफ़्लो अलग है।

संलग्न को इस मुद्दे को स्पष्ट करना चाहिए।

मैं वर्तमान रनले को कैसे बदलूं?

$ systemctl isolate runlevelX.target

मैं अगले बूट के लिए डिफ़ॉल्ट रनवे कैसे बदल सकता हूं?

# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
  • ln -sf TARGET DESTINATION
  • -s प्रतीकात्मक लिंक बनाता है
  • -f मौजूदा गंतव्य फ़ाइल को निकालता है

या (जैसा कि @centimane ने सुझाव दिया है) बस "धन्य" systemdकमांड का उपयोग करें :

systemctl set-default [target name].target

मैं वर्तमान रनले की पहचान कैसे करूं?

$ systemctl list-units --type=target

क्या मैं अभी भी रनवे के बीच स्विच करने के लिए init कमांड का उपयोग कर सकता हूं?
ड्रापनेस

2
यदि आपका सिस्टमड पैकेज SysV कंपेटिटिव सपोर्ट के साथ बनाया गया है, तो इसमें सिस्टम बाइनरी के लिए टेलिनिट सिमलिंक शामिल होगा, जिसे टेलिनिट के रूप में कहा जाता है, सिस्टम के टारगेट के लिए रनवेवेल को मैप करेगा - उन मैपिंग की सूची के लिए टेलिनिट (8) की जाँच करें ।
वीलैंड

2
डिफ़ॉल्ट लक्ष्य को बदलने के लिए आपको systemctl set-default [target name].targetमैन्युअल रूप से लिंक बनाने के बजाय उपयोग करना चाहिए ।
सेंटिमेन

13

जैसा कि सिस्टमड लोगों ने खुद दो बार लिखा है, एक बार उनके telinitमैनुअल में और एक बार उनके runlevelमैनुअल में, रनवेल्स "अप्रचलित" हैं। आप रनवे के बारे में भूल सकते हैं।

ये चीजें वास्तव में सिस्टमड में बिल्कुल भी मौजूद नहीं हैं, कुछ अनुकूलता के कारण।

  • लक्ष्य नामों के लिए कुछ प्रतीकात्मक लिंक हैं, लेकिन ये लक्ष्य वास्तव में सिस्टमड उचित द्वारा कभी उपयोग नहीं किए जाते हैं।
    • बल्कि, बूटस्ट्रैप प्रक्रिया एक default.target(और एक या दोनों एक graphical.targetऔर एक multi-user.target) rescue.target, या, या एक को नियुक्त करती है emergency.target। और शटडाउन प्रक्रिया में shutdown.targetreboot.target, ए halt.target, या ए शामिल है poweroff.targetकोई रन-स्तरीय लक्ष्य बूटस्ट्रैप या शटडाउन में शामिल नहीं हैं
    • telinitआदेश है, जो एक सोच सकते हैं का उपयोग करता है अनुकूलता सांकेतिक लिंक अपने कमांड लाइन तर्क मैप करने के लिए, कि या तो नहीं करता है। वहाँ के स्रोत कोड में एक hardwired तालिका है telinitकार्यक्रम, और संख्या 2, 3, 4, और 5के रूप में आदेश करने के लिए तर्क को मैप करने के hardwired हैं multi-user.targetऔर graphical.target
    • systemd-update-utmp एक आंतरिक हार्डवेयर्ड टेबल भी है।
  • रनलेवल सामान की "इनिट टेबल" नहीं है। systemd केवल वैन स्मुरेनबर्ग के साथ संगत है, वैन स्मुरेनबर्ग के rcसाथ नहीं init
  • सिस्टमड द्वारा ही बनाए रखा गया कोई "चालू रन स्तर" मूल्य नहीं है। बल्कि, लगभग पूरी तरह से अनिर्दिष्ट systemd-update-utmpकमान आंतरिक रूप से , और rescue.target, के सक्रियण राज्यों के संदर्भ में संचालित होती है ।multi-user.targetgraphical.target
  • systemd-sysv-generator, systemd की पश्चगामी संगतता सेवा इकाई जनरेटर, उत्पन्न सेवा इकाइयों /etc/rc[234].dमें सिर्फ एक Wanted-Byरिश्ते में निर्देशिकाओं को multi-user.targetमिलाती है। उत्पन्न सेवा इकाइयों में स्तरों को चलाने के लिए कोई वास्तविक संदर्भ नहीं है। (वर्षों पहले हुआ करते थे, लेकिन सिस्टम के लोगों ने पाया कि यह गलत हो गया, क्योंकि उन्हें कहीं और संदर्भित नहीं किया गया था।)

यदि कोई एक सिस्टम का उपयोगकर्ता है जो आर्कब लिनक्स पर प्रश्नकर्ता के लिए सिस्टम को बनाता है "आर्क इनस्टॉल" पर "एक्सट्रीम आर्ग्युमेंट्स" में ० इनिट 0` क्यों होता है? " के रूप में init 0"मूल" systemd व्यवहार, शिकायत है कि आदेश को गलत तरीके से लागू किया गया है, जिसमें परिणाम।

आगे की पढाई


4

बहुत बहुत धन्यवाद। तो, अगर मैं सही ढंग से समझा:

उदाहरण के लिए:

ls -ll /usr/lib/systemd/system/runlevel*.target

आउटपुट:

/usr/lib/systemd/system/runlevel0.target -> poweroff.target
/usr/lib/systemd/system/runlevel1.target -> rescue.target
/usr/lib/systemd/system/runlevel2.target -> multi-user.target
/usr/lib/systemd/system/runlevel3.target -> multi-user.target
/usr/lib/systemd/system/runlevel4.target -> multi-user.target
/usr/lib/systemd/system/runlevel5.target -> graphical.target
/usr/lib/systemd/system/runlevel6.target -> reboot.target

तो जैसा कि आप देख सकते हैं, रनलेवल्स की अवधारणा मौजूद है, लेकिन यह इस तथ्य के कारण काफी अप्रचलित है कि रनलेवेल.टार्ग फाइलें वास्तव में "वास्तविक" फाइलें नहीं हैं, लेकिन नई, आधुनिक, बेहतर नामित फाइलों योजना के सॉफ्ट-लिंक हैं जो systemd उन्हें "लक्ष्य" कहना पसंद करता है।

इसलिए, यदि आप ऐसा करना चाहते हैं तो telinit 5यह इस तरह होगा: systemctl isolate runlevel5.target जो कि समान है: systemctl isolate graphical.target(मेरी राय में अनुशंसित)।

यदि आप सभी संभावित लक्ष्यों को जानना चाहते हैं, तो बस:

ls /usr/lib/systemd/system/*.target

हां, मेरा मानना ​​है कि आप इसे सही तरीके से समझ रहे हैं। मैं SystemD के एक देर से अपनाने वाला हो जाएगा, प्रक्रियात्मक, चरण-दर-चरण, INIT.D प्रणाली के रूप में मैं सबसे अधिक परिचित हूं ... मैं सराहना करता हूं कि आप SystemD की खोज कर रहे हैं। SystemD का सबसे अच्छा हिस्सा इसके समानांतर मल्टी-थ्रेडिंग है, जो तेज बूट को सक्षम करता है। मल्टी-थ्रेडिंग बूट को INIT.D के साथ पूरा किया जा सकता है, लेकिन इसके लिए मजबूत BASH स्क्रिप्टिंग की आवश्यकता होती है।
टायलर मैजिनीस

BTW, ls -llके बराबर है ls -l। आप उपयोग करने की आदत में पड़ना चाह सकते हैं ls -ld
जी-मैन का कहना है कि Man

telinit 0/ telinit 6अभी भी काम करते हैं। चूंकि यह माइग्रेशन में मदद करता है, और मुझे लगता है कि अधिकांश डिस्ट्रोस अभी भी समर्थन को छोड़ने का कोई कारण नहीं देखते हैं। isolateस्पष्ट रूप से भाग-स्तर के काम की नकल करने की आकांक्षा की जाती है, लेकिन विभिन्न बुराई के मामले हैं। मैं अत्यधिक करने के लिए सभी निर्देशों की अनदेखी की सलाह देते हैं isolate runlevel5.targetया यहां तक कि isolate graphical.target। उदाहरण किनारे का मामला: github.com/systemd/systemd/issues/6505
sourcejedi

0

systemd शुरू की लक्ष्य के लिए एक समकक्ष के रूप में रनलेवलों SysV init प्रणाली में। sytemd डेवलपर्स ने इसे अधिकांश sysV स्क्रिप्ट के साथ संगत किया। उसी के लिए होता है telinit <runlevel>। यह systemd समकक्ष में अनुवादित है।

उदाहरण के लिए telinit 0मशीन से शक्तियाँ। systemd के पास runoffvel 0 के समान करने के लिए poweroff.target है । तो poweroff.targettelinit 0 को सक्रिय करने के लिए systemd द्वारा अनुवादित किया गया है ।

लेकिन कुछ संगतता समस्याएं sytemd और sysV init सिस्टम के साथ हैं-> https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.