उत्थान से सिस्टेम तक स्विच करने के लिए तर्क?


28

उबंटू 15.04 के साथ आने वाला बड़ा बदलाव बूटस्ट और सिस्टम सर्विस स्टार्टअप के प्रबंधन के लिए डिफ़ॉल्ट के रूप में अपस्टार्ट से सिस्टमड में स्विच है।

क्या कोई भी किसी गैर-तकनीकी उपयोगकर्ता को पर्याप्त रूप से समझा सकता है कि यह हमें कैसे और यदि प्रभावित करता है? और यह महत्वपूर्ण क्यों है?

जवाबों:


29

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

उपस्टार्ट के लिए सक्रिय रूप से उपयोग और विकास करने वाले उपयोगकर्ता, सिसड्मिन और डेवलपर वे लोग हैं जिन्हें चीजों को संबोधित करने की आवश्यकता है। नहीं है उबंटू विकी पर एक प्रवास दस्तावेज़ को मदद डेवलपर अपने init स्क्रिप्ट परिवर्तित, लेकिन उपयोगकर्ताओं और sysops 14.04 के साथ चिपके हुए (जो 2019 तक समर्थित है) द्वारा कल का नवाब के प्रयोग पर ले जा सकता है।

परिवर्तन का कारण और तर्क वास्तव में उबंटू की ओर से नहीं था। कैन्टिकल उपस्टार्ट (उनकी परियोजना) के साथ काफी खुश थे लेकिन कई डेबियन उपयोगकर्ता बूट पर बेहतर संगति और सभी सेवाओं में बेहतर निगरानी कार्यक्षमता प्राप्त करने के लिए एक आधुनिक इनिट इंजन पर जाना चाहते थे।

इसका मतलब था कि विभिन्न विकल्पों (तर्कसंगत) और सिस्टमड के बीच लड़ाई अंततः जीत गई।

कैन्यन डेबियन के साथ गया क्योंकि यह सबसे आसान और शायद सबसे अच्छा है। वे एक परियोजना छोड़ने के लिए और ऊपर की ओर नहीं लड़ रहे हैं। यह हमें अन्य वितरण (रेड हैट, फेडोरा, आदि) के साथ भी लाता है जो सिस्टमड में भी जा रहे हैं। अधिक ध्यान और प्रयास का कम दोहराव।

tl; डॉ एक गैर तकनीकी व्यक्ति के लिए, यह आप सब पर असर नहीं पड़ेगा। उबंटू के लिए इसका मतलब कम काम और एक बेहतर इनिट सिस्टम होना चाहिए।


18

क्या कोई भी किसी गैर-तकनीकी उपयोगकर्ता को पर्याप्त रूप से समझा सकता है कि यह हमें कैसे और यदि प्रभावित करता है?

सिद्धांत रूप में, यह गैर-तकनीकी अंत उपयोगकर्ता को प्रभावित नहीं करना चाहिए जो इस प्रणाली के वास्तव में काम करने के तरीके के बारे में नहीं सोचता है। व्यवहार में, बहुत सी चीजें हैं जो आप देखने जा रहे हैं।

यहाँ एक अधूरी सूची है:

  • यदि आपके पास प्रोग्राम शुरू करने के लिए अपस्टार्ट नौकरी परिभाषा फ़ाइलों का उपयोग करने वाले सॉफ्टवेअर हैं, तो वे काम करना बंद कर देंगे। आपको स्थापित करना होगा (और संभवतः लिखना है लेकिन अधिक सामान्यतः किसी और को निकोट करें जो पहले से लिखा है) सिस्टमड सर्विस यूनिट फाइलें। उदाहरण: https://askubuntu.com/questions/613785
  • सिस्टम प्रबंधन डेवलपर्स द्वारा पावर प्रबंधन जैसी चीजों के बारे में सिस्टम डिज़ाइनर्स में विभिन्न डिज़ाइन मान्यताओं के परिणामस्वरूप उन बाधाओं पर होते हैं जिनके साथ आप अभ्यस्त हो गए हैं। उदाहरण के लिए, लैपटॉप पर ढक्कन स्विच के जवाब में क्या होना चाहिए, इसके बारे में सिस्टमड डेवलपर्स के पास बहुत ही निश्चित विचार हैं
  • यदि आप एनवीडिया मालिकाना डिस्प्ले ड्राइवर का उपयोग कर रहे हैं, तो सिस्टमड में विभिन्न डिज़ाइन निर्णय हैं जो आपको प्रभावित करते हैं। उदाहरण: https://askubuntu.com/questions/613773
  • अपस्टार्ट से आने के दौरान यह वास्तव में प्रासंगिक नहीं है, क्योंकि उबंटू उपयोगकर्ताओं के पास अब कुछ वर्षों से यह बताने वाला एक मैनुअल पेज है, लेकिन मैं इसे गैर-उबंटू उपयोगकर्ताओं के लिए उल्लेख करता हूं जो इसे पढ़ सकते हैं: अन्य लिनक्स ऑपरेटिंग सिस्टम सिस्टम 5 init+ से आने वाले उपयोगकर्ता rcइस तथ्य से काट दिया जाता है कि सिस्टमड केवल सिस्टम 5 के साथ पीछे की ओर संगत है rc। ऊपर की ओर, और वास्तव में अधिकांश अन्य प्रणालियों की तरह, यह प्रोफेसरों, और आपूर्ति, सिस्टम 5 initऔर इसकी कॉन्फ़िगरेशन फ़ाइल के साथ कोई पीछे की संगतता नहीं है /etc/inittab

    इसलिए जिन लोगों ने 30-कुछ वर्षों के लोगों से सलाह का पालन किया था, "ठीक है, आप बस इसे संपादित कर सकते हैं /etc/inittab" ..., या जो लोग उस सलाह का पालन करते हैं, जो अब उस सलाह का उपयोग करते हैं, उनके पास ऐसे सॉफ्टवेयर हैं जो बूटस्ट्रैप पर शुरू नहीं होते हैं। उदाहरण: https://unix.stackexchange.com/a/196197/5132

  • आप सिस्टमड कमांड के माध्यम से एकल-उपयोगकर्ता मोड में नहीं आ सकते हैं shutdown, जैसा कि आप पिछले shutdownआदेशों के साथ कर सकते हैं । इस तथ्य के अलावा कि इसे systemd शब्दजाल में बचाव मोड कहा जाता है, बचाव मोड को systemd विश्वदृष्टि में एक शट डाउन स्थिति नहीं माना जाता है। इसे एक रनिंग स्टेट माना जाता है । shutdown nowमशीन को बंद कर देगा। यह systemctl rescueसिस्टमड दुनिया में सिंगल-यूजर मोड तक पहुंचना है। आगे पढ़े: https://unix.stackexchange.com/a/196471/5132
  • उस अंतिम विषय पर आगे: यदि आपने पहले से ही रन स्तर के विचार को नहीं फेंका है , तो अब ऐसा करने का समय आ गया है। भविष्य वाचन: https://unix.stackexchange.com/a/196014/5132
  • आप यादृच्छिक WWW ब्राउज़िंग द्वारा पाई जाने वाली सामान्य प्रणालीगत सलाह का पालन करने के बारे में सावधान रहने वाले हैं, क्योंकि आप "जानते हैं" कि "यह सब अब सिस्टम है"। आप लोगों को --userविकल्प के साथ कमांड चलाने के बारे में बात करते हुए देखेंगे systemctl। यह उबंटू (अभी तक) पर लागू नहीं होता है। इस क्षेत्र में upstart और systemd में काफी भिन्नता है, और Ubuntu संस्करण 15 अभी भी एक systemd प्रति-उपयोगकर्ता उदाहरण के बजाय upstart प्रति सत्र init का उपयोग करता है । तो https://superuser.com/a/860598/38062 लागू नहीं होगा, उदाहरण के लिए। ☺

6

जैसा कि अन्य लोग पहले ही यहां बता चुके हैं, सिद्धांत रूप में, यह गैर-तकनीकी अंत उपयोगकर्ता को प्रभावित नहीं करना चाहिए - और सिद्धांत रूप में सिद्धांत और व्यवहार में कोई अंतर नहीं है लेकिन व्यवहार में है।

स्पष्टीकरण

मुझे लगता है कि यहां पोस्ट की गई कुछ चीजों को कुछ स्पष्टीकरण की आवश्यकता है:

यह एक इनिट सिस्टम है, न कि कुछ उपयोगकर्ता जो परंपरागत रूप से बातचीत करते हैं।

यह SysV init के साथ और Upstart के साथ मामला था, लेकिन यह systemd के साथ ऐसा नहीं है। यह बहुत सी चीजें करता है जो उपयोगकर्ता पारंपरिक रूप से बातचीत करते हैं:


यह पूरी तरह से अपस्टार्ट द्वारा प्रदान की गई कार्यक्षमता को बदलना चाहिए- और कुछ अतिरिक्त चीजें करें

स्पष्ट करने के लिए दो बातें - पहले अपस्टार्ट को पूरी तरह से बदलने के बारे में:

कोई SysV init स्क्रिप्ट नहीं

लोगों के पास सिस्टमड के साथ एक समस्या यह है कि यह SysV init स्क्रिप्ट नहीं चलाता है। तो एक उदाहरण है कि यह उपस्टार्ट द्वारा प्रदान की गई कार्यक्षमता को पूरी तरह से प्रतिस्थापित नहीं करता है

यह कुछ ऐसा है जिस पर हम 30 वर्षों तक भरोसा कर सकते हैं और परंपरागत रूप से आपने खुद को दोहराए बिना (एक ही स्क्रिप्ट के कई संस्करणों को लिखकर) अधिकतम पोर्टेबिलिटी के लिए SysV init स्क्रिप्ट लिखी थी, जो कि इससे अधिक नहीं है।

आधिकारिक रिपॉजिटरी से केवल पैकेज का उपयोग करते समय यह एक समस्या नहीं होनी चाहिए क्योंकि संभवतः सभी पैकेज जो SysV init या Upstart स्क्रिप्ट का उपयोग करते थे, उन्हें पैक होने से पहले अपनी स्क्रिप्ट को फिर से लिखना होगा।

यह केवल उन लोगों के लिए एक समस्या होगी, जो किसी भी तृतीय-पक्ष या कस्टम सॉफ़्टवेयर का उपयोग करने के लिए होते हैं, जिनके पास इनसाइट स्क्रिप्ट होती हैं, जो SysV init या Upstart के लिए लिखी जाती हैं और सिस्टमैट के साथ सिस्टम में अपग्रेड करने से पहले इनिट स्क्रिप्ट को फिर से लिखना होगा (या प्राप्त करें) अपस्टार्ट इंस्टॉल किया गया, जो एक विकल्प भी है , या सिस्टम के लिए माइग्रेट करता है जो सिस्टमड का उपयोग नहीं करता है)।

सिस्टमड-एसआईएसवी-जनरेटर है जो सिस्टम स्क्रिप्ट्स के लिए SysV इनिट स्क्रिप्ट का स्वचालित रूप से अनुवाद करने वाला है, लेकिन कुछ बग और स्पष्ट असंगति की एक लंबी सूची है ।

अब, दूसरा स्पष्टीकरण - उन कुछ अतिरिक्त चीजों के बारे में:

कुछ अतिरिक्त चीजें

वे "कुछ अतिरिक्त बातें" कि systemd कवर करने जा रहा है - के अनुसार systemd के लिए एक परिप्रेक्ष्य - क्या हासिल किया गया है, और आगे क्या है द्वारा प्रस्तुति लेंनार्ट पोएटरिंग GNOME.asia पर 2014 में - इस प्रकार हैं:

  • init सिस्टम
  • जर्नल लॉगिंग
  • लॉगिन प्रबंधन
  • डिवाइस प्रबंधन
  • अस्थायी और वाष्पशील फ़ाइल प्रबंधन
  • द्विआधारी प्रारूप पंजीकरण
  • बैकलाइट सेव / रिस्टोर
  • rfkill सेव / रिस्टोर करें
  • bootchart
  • आगे पढ़ें
  • एन्क्रिप्टेड भंडारण सेटअप
  • EFI / GPT विभाजन खोज
  • वर्चुअल मशीन / कंटेनर पंजीकरण
  • कंटेनर प्रबंधन
  • होस्टनाम प्रबंधन
  • स्थानीय प्रबंधन
  • समय प्रबंधन
  • यादृच्छिक बीज प्रबंधन
  • sysctl वैरिएबल प्रबंधन
  • सांत्वना प्रबंधन
  • आत्मनिरीक्षण
  • ऑटो खोज
  • लगाओ और चलाओ
  • नेटवर्क प्रबंधन
  • systemd-networkd
  • डीएनएस कैश
  • mDNS उत्तरदाता
  • LLMNR उत्तरदाता
  • DNSSEC सत्यापन
  • कर्नेल में आई.पी.सी.
  • kdbus
  • एसडी-बस
  • NTP के साथ समय सिंक्रनाइज़ेशन
  • systemd-timesyncd
  • कंटेनरों के साथ एकीकरण
  • सेवाओं की सैंडबॉक्सिंग
  • ऐप्स का सैंडबॉक्सिंग
  • ओएस छवि प्रारूप
  • कंटेनर छवि प्रारूप
  • ऐप छवि प्रारूप
  • ऑटो-डिस्कवरी के साथ जीपीटी
  • स्टेटलेस सिस्टम
  • तात्कालिक प्रणाली
  • नए यंत्र जैसी सेटिंग
  • नोड आरंभीकरण और अद्यतन
  • बादल के साथ एकीकरण
  • नोड्स में सेवा प्रबंधन
  • फर्मवेयर के लिए सभी तरह से सत्यापित करने योग्य ओएस छवियां
  • बूट लोड हो रहा है
  • वितरण के बीच इंटरनेट के अगली पीढ़ी के ओएस का निर्माण करना

इसलिए वापस जा रहे हैं: "यह एक init प्रणाली है, न कि कुछ उपयोगकर्ता जो परंपरागत रूप से बातचीत करते हैं।" - यह बताया जाना चाहिए कि इनिट सिस्टम उस सूची में केवल एक आइटम है।


और अंत में, आखिरी बात जो मैं टिप्पणी करना चाहूंगा:

[टी] वह केवल एक गैर-तकनीकी उपयोगकर्ता को यह देखेगा कि यह कब गलत है।

ओह, कैसी राहत। :)

परिवर्तन

अंत उपयोगकर्ताओं के लिए सबसे उल्लेखनीय परिवर्तन (स्वयं स्क्रिप्ट के अलावा) सेवाओं को शुरू करने और आदेशों का उपयोग करने से रोक रहा है और जैसे:

जो अब उम्मीद के मुताबिक काम नहीं कर रहा है। उदाहरण के लिए, nohupयह सुनिश्चित करने के लिए कि आपके सत्र से लॉग आउट करने के बाद प्रक्रिया चलती रहती है, यह सुनिश्चित करने के लिए एक POSIX कमांड है। यह अब systemd पर काम नहीं करता है। इसके अलावा कार्यक्रमों screenऔर जैसे tmuxएक विशेष तरीके से लागू किए जाने की आवश्यकता है या अन्यथा आप उनके साथ चलने वाली प्रक्रियाओं को मार डाला जाएगा (जबकि उन प्रक्रियाओं को नहीं मारना आमतौर पर स्क्रीन या tmux चलाने का मुख्य कारण है)।

यह बग नहीं है, यह एक डिजाइन विकल्प है, इसलिए भविष्य में इसके ठीक होने की संभावना नहीं है। इस मुद्दे के बारे में लेनार्ट पोइटरिंग ने यही कहा है :

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

अधिक जानकारी के लिए देखें:

चल रहा है screen

  • कल का नवाब: screen
  • systemd: systemd-run --user --scope screen

(नोट: ऊपर दिए गए "अपस्टार्ट" का व्यवहार वास्तव में सिवाय सिस्टमड के कुछ भी है, यह विशिष्ट नहीं है)

नौकरी शुरू करना:

  • कल का नवाब: start foo
  • systemd: systemctl start foo

नौकरी रोकना:

  • कल का नवाब: stop foo
  • systemd: systemctl stop foo

नौकरी के लिए पुनः आरंभ करना:

  • कल का नवाब: restart foo
  • systemd: systemctl restart foo

उनकी स्थिति के साथ नौकरियों की सूची बनाना:

  • कल का नवाब: initctl list
  • systemd: systemctl status

( उपस्टार्ट और सिस्टमड के पेशेवरों / विपक्षों के बारे में मेरा जवाब देखें। अधिक विवरण के लिए जो इस प्रश्न के दायरे से बाहर हैं।)

लॉग्स

लॉग्स को हैंडल करने में भी एक बड़ा अंतर है क्योंकि यूनिक्स परंपरा के विपरीत सिस्टमड के लॉग्स को बाइनरी फ़ाइलों में कस्टम प्रारूप में संग्रहीत किया जाता है, इसलिए इसके बजाय:

cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log

आपको अपने लॉग का उपयोग करने के लिए विशेष कमांड का उपयोग करने की आवश्यकता है:

sudo journalctl -u foo
sudo journalctl -u foo -f

विवाद

पहले डेबियन और बाद में उबंटू में सिस्टमड का परिचय विवादों और विशाल विरोध के बिना नहीं था जैसा कि किसी को पता है जिसने निम्नलिखित लेखों में से एक लिखा है:

Systemd पर आधिकारिक डेबियन स्थिति और जिसके परिणामस्वरूप विवाद के लिए प्रेरित किया , 2014 में पलायन घोषणा और साथ समाप्त हो गया इयान जैक्सन के इस्तीफे की

Init Freedom , Without-Systemd.org और Systemd-Free.org पहल का जन्म हुआ, जिसमें हैकर न्यूज़ पर बहुत चर्चा हुई

आगे की पढाई


आप मेरे उत्तर को एक अलग संदर्भ में बता रहे हैं। Systemd है एक init प्रणाली की तुलना में अधिक है, लेकिन इस सवाल का नवोदय → systemd और उस निर्णय ... नहीं के बारे में था, "सब बातों systemd प्रतिस्थापित कर देगा जिसे हैं?"
ओली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.