Upstart और systemd के पेशेवरों / विपक्ष क्या हैं?


183

ऐसा प्रतीत होता है systemd गर्म नया है init खंड पर प्रणाली, के रूप में ही कल का नवाब कुछ साल पहले किया गया था। प्रत्येक के लिए पेशेवरों / विपक्ष क्या हैं? इसके अलावा, प्रत्येक अन्य init सिस्टम की तुलना कैसे करता है?


4
@keith iirc Openrc बस SysV का उपयोग करता है, लाभ स्टार्टअप स्क्रिप्ट का एक अच्छा संग्रह है जो सामान्य घटकों का उपयोग करते हैं और पोर्टेबल हैं (किसी भी शेल पर अर्थ का काम) यह एक अच्छा सफाई है, लेकिन वास्तव में एक नया initd नहीं है
xenoteroside

@xeno यह करता है, लेकिन आप वास्तव में नहीं बता सकते। वहाँ कोई rcX.d या [KS] बिल्कुल नहीं हैं। वास्तव में sysv init अपने आप में काफी लचीला है, और रनलेवल्स वास्तव में सामान्य तरीके से उपयोग नहीं किए जाते हैं।
कीथ

हालाँकि इस ब्लॉग का लेखक सिस्टमड के खिलाफ है, लेकिन मेरा सुझाव है कि इसे पढ़ें। यह सिस्टमड और बीएसडी इनिट के पेशेवरों और विपक्षों के ऊपर जाता है। textplain.net/blog/2015/...
पेश्के

1
कृपया 2016 अपडेट unix.stackexchange.com/a/287282/49091 पर भी जाएं।
इगौरव

सिस्टमड का कोई भी कथित लाभ इसे लागू करने के लिए 100 वर्षों में दुनिया के लिए पहले से ही खर्च की भरपाई नहीं करेगा। इस बकवास से निपटने के लिए यूनिक्स प्रशासन द्वारा बिताए गए हर मिनट या घंटे या दिन को पहले से ही अरबों और सीटी के अलावा अन्य वास्तविक लाभों के लिए जोड़ना होगा?
वासलप

जवाबों:


90

2016 अपडेट

यहां अधिकांश उत्तर पांच साल पुराने हैं इसलिए यह कुछ अपडेट के लिए समय है।

उबंटू डिफ़ॉल्ट रूप से अपस्टार्ट का उपयोग करता था लेकिन उन्होंने पिछले साल इसे सिस्टमड के पक्ष में छोड़ दिया - देखें:

इसके कारण उबंटू विकी पर उपस्टार्ट उपयोगकर्ताओं के लिए एक अच्छा लेख सिस्टमड है - अपस्टार्ट और सिस्टमड के बीच बहुत विस्तृत तुलना और अपस्टार्ट से सिस्टमड तक एक संक्रमण गाइड।

(ध्यान दें कि उबंटू विकी के अनुसार आप अभी भी उबंटू के वर्तमान संस्करणों पर डिफ़ॉल्ट रूप से इंस्टॉल करके upstart-sysvऔर चलाकर चला सकते हैं sudo update-initramfs -uलेकिन सिस्टमड प्रोजेक्ट के दायरे को देखते हुए मुझे नहीं पता कि यह कैसे काम करता है, या सिस्टमड है या नहीं स्थापना रद्द करना संभव है।)

नीचे दिए गए कमांड और लिपियों में से अधिकांश जानकारी को उस लेख में उपयोग किए गए कुछ उदाहरणों से अनुकूलित किया गया है (जो कि क्रिएटिव कॉमन्स एट्रिब्यूशन-शेयरएलाइल 3.0 लाइसेंस के तहत स्टैक एक्सचेंज उपयोगकर्ता योगदान की तरह ही लाइसेंस प्राप्त है )।

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

आदेश

रनिंग सु:

  • नवोदय: su
  • systemd: machinectl shell

(नीचे "सु कमांड रिप्लेसमेंट" अनुभाग देखें)

रनिंग स्क्रीन:

  • नवोदय: screen
  • systemd: systemd-run --user --scope screen

(नीचे दिए गए अनुभाग "पृष्ठभूमि प्रक्रियाओं की अप्रत्याशित हत्या" देखें)

चल रहा है tmux:

  • नवोदय: tmux
  • systemd: systemd-run --user --scope tmux

(नीचे दिए गए अनुभाग "पृष्ठभूमि प्रक्रियाओं की अप्रत्याशित हत्या" देखें)

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

  • नवोदय: start foo
  • systemd: systemctl start foo

नौकरी रोकना:

  • नवोदय: stop foo
  • systemd: systemctl stop foo

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

  • नवोदय: restart foo
  • systemd: systemctl restart foo

लिस्टिंग नौकरियों:

  • नवोदय: initctl list
  • systemd: systemctl status

नौकरी फू के विन्यास की जाँच:

  • नवोदय: init-checkconf /etc/init/foo.conf
  • systemd: systemd-analyze verify /lib/systemd/system/foo.service

लिस्टिंग नौकरी के पर्यावरण चर:

  • नवोदय: initctl list-env
  • systemd: systemctl show-environment

नौकरी का पर्यावरण चर सेट करना:

  • नवोदय: initctl set-env foo=bar
  • systemd: systemctl set-environment foo=bar

नौकरी का पर्यावरण चर निकालना:

  • नवोदय: initctl unset-env foo
  • systemd: systemctl unset-environment foo

लॉग्स

अपस्टार्ट में, लॉग सामान्य पाठ फ़ाइलें / var / log / upstart निर्देशिका में होती हैं, इसलिए आप उन्हें हमेशा की तरह संसाधित कर सकते हैं:

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

सिस्टमड लॉग में एक आंतरिक बाइनरी प्रारूप (पाठ फ़ाइलों के रूप में नहीं) में संग्रहीत किया जाता है, इसलिए आपको journalctlउन्हें एक्सेस करने के लिए कमांड का उपयोग करने की आवश्यकता होती है:

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

स्क्रिप्ट

उदाहरण लिपि में लिखा गया है /etc/init/foo.conf:

description "Job that runs the foo daemon"
start on runlevel [2345]
stop on runlevel [016]
env statedir=/var/cache/foo
pre-start exec mkdir -p $statedir
exec /usr/bin/foo-daemon --arg1 "hello world" --statedir $statedir

उदाहरण में लिखी गई सिस्टम स्क्रिप्ट/lib/systemd/system/foo.service :

[Unit]
Description=Job that runs the foo daemon
Documentation=man:foo(1)
[Service]
Type=forking
Environment=statedir=/var/cache/foo
ExecStartPre=/usr/bin/mkdir -p ${statedir}
ExecStart=/usr/bin/foo-daemon --arg1 "hello world" --statedir ${statedir}
[Install]
WantedBy=multi-user.target

सु कमांड रिप्लेसमेंट

एक suकमांड रिप्लेसमेंट को सिस्टमड में मर्ज किया गया था # 1022

क्योंकि, लेन्नर्ट पोइटरिंग के अनुसार, "सु वास्तव में एक टूटी हुई अवधारणा है"

वह बताते हैं कि "आप पहले की तरह su और sudo का उपयोग कर सकते हैं, लेकिन यह उम्मीद न करें कि यह पूरी तरह से काम करेगा "

एक समान suव्यवहार को प्राप्त करने का आधिकारिक तरीका अब है:

machinectl shell

# 825 जारी करने के लिए चर्चा में लेनार्ट पोइटरिंग द्वारा इसे आगे समझाया गया है :

"ठीक है, इस बारे में लंबे समय से चर्चा हुई है, लेकिन समस्या यह है कि सु क्या करना चाहिए यह बहुत अस्पष्ट है। [...] लंबी कहानी संक्षेप: सु वास्तव में एक टूटी हुई अवधारणा है। यह आपको एक तरह का खोल देगा। , और यह उसके लिए उपयोग करने के लिए ठीक है, लेकिन यह एक पूर्ण लॉगिन नहीं है, और एक के लिए गलत नहीं होना चाहिए। " - लेन्नर्ट पोइटरिंग

यह सभी देखें:

पृष्ठभूमि प्रक्रियाओं की अप्रत्याशित हत्या

जैसे आदेश:

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

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

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

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

उच्च-स्तरीय स्टार्टअप अवधारणा

एक तरह से systemd पीछे की ओर काम करता है - upstart नौकरियों में जैसे ही वे शुरू कर सकते हैं और systemd नौकरियों में शुरू होता है जब उन्हें करना होता है। दिन के अंत में एक ही नौकरी दोनों प्रणालियों द्वारा शुरू की जा सकती है और बहुत अधिक समान क्रम में, लेकिन आप इसके बारे में सोचते हैं कि यह विपरीत दिशा से बोल रहा है।

यहां बताया गया है कि उपस्टार्ट उपयोगकर्ताओं के लिए Systemd इसे कैसे बताता है:

शुरुआती प्रक्रियाओं (नौकरियों) के लिए अपस्टार्ट का मॉडल "लालची घटना-आधारित" है, अर्थात सभी उपलब्ध नौकरियां जिनके स्टार्टअप की घटनाएं जल्द से जल्द शुरू होती हैं। बूट के दौरान, अपस्टार्ट स्टार्टअप या आरसीएस जैसी कुछ प्रारंभिक घटनाओं को "ट्री रूट" के रूप में संश्लेषित करता है, शुरुआती सेवाएं उन पर शुरू होती हैं, और बाद में सेवाएं तब शुरू होती हैं जब पूर्व चल रहे होते हैं। एक नई नौकरी के लिए केवल अपनी कॉन्फ़िगरेशन फ़ाइल को / etc / init / में सक्रिय होना चाहिए।

प्रक्रिया शुरू करने के लिए systemd का मॉडल (इकाइयाँ) "आलसी निर्भरता-आधारित" है, अर्थात एक इकाई केवल तभी शुरू होगी जब कोई और आरंभिक इकाई उस पर निर्भर होगी। बूट के दौरान, सिस्टमड एक "रूट यूनिट" शुरू करता है (default.target, grub में ओवरराइड किया जा सकता है), जो तब ट्रांसेटिव का विस्तार करता है और इसकी निर्भरता शुरू करता है। एक नई इकाई को सक्रिय होने के लिए खुद को बूट अनुक्रम (आमतौर पर मल्टी-user.target) की एक इकाई की निर्भरता के रूप में जोड़ना होगा।

वितरण में उपयोग

अब विकिपीडिया के अनुसार कुछ हालिया आंकड़े:

डिफ़ॉल्ट रूप से अपस्टार्ट का उपयोग करने वाले वितरण:

डिफ़ॉल्ट रूप से सिस्टमड का उपयोग करने वाले वितरण:

( जानकारी के लिए विकिपीडिया देखें )

न तो अपस्टार्ट और न ही सिस्टमड का उपयोग करने वाले वितरण:

विवाद

अतीत में सिस्टमन से बचने के लिए डेबियन का कांटा प्रस्तावित किया गया हैDevuan जीएनयू + लिनक्स बनाया गया था - बिना systemd डेबियन का एक कांटा (धन्यवाद करने के लिए fpmurphy1 टिप्पणी में यह उनका कहना है के लिए)।

इस विवाद के बारे में अधिक जानकारी के लिए, देखें:

जैसा कि आप में से बहुत से लोग पहले से ही जानते होंगे, इयान जैक्सन द्वारा प्रचारित इनिट जीआर डेबियन वोट, डेबियन की विरासत और उसके उपयोगकर्ताओं को सिस्टम एवलांच से बचाने के लिए उपयोगी नहीं था।

इस स्थिति से सिस्टम पर निर्भरता में ताला लग जाता है जो विकास की स्वतंत्रता को खतरे में डालने वाला है और डेबियन, इसके अपस्ट्रीम और इसके डाउनस्ट्रीम के लिए गंभीर परिणाम हैं।

सीटीटीई एक निर्भरता की अदला-बदली करने और हमें सिस्विनीट पर सिस्टमड की एक सूक्ष्म स्थापना पर समय हासिल करने में कामयाब रहा, लेकिन यहां तक ​​कि यह प्रक्रिया थकावट और नाटक से भरा था। आखिरकार, एक हफ्ते पहले, इयान जैक्सन ने इस्तीफा दे दिया। [...]

मैं तत्काल प्रभाव से तकनीकी समिति से इस्तीफा दे रहा हूं।

हालांकि यह महत्वपूर्ण है कि परियोजना के 30-40% के विचार जो मेरे साथ सहमत हैं, उन्हें टीसी पर प्रतिनिधित्व करना जारी रखना चाहिए, मैं खुद स्पष्ट रूप से बहुत विवादास्पद हूं इस बिंदु पर ऐसा करने के लिए एक आंकड़ा। मुझे इस ओर कदम बढ़ाने की कोशिश करनी चाहिए कि परियोजना के शासन के बारे में बातचीत किस हद तक व्यक्तिगत है। [...]

देवन के लिए डिफ़ॉल्ट इनिट प्रणाली के रूप में उपयोग करने के निर्णय पर विवाद से देवुआन पैदा हुए थे। Systemd पर आधिकारिक डेबियन स्थिति दावा है कि से भरा हुआ है दूसरों खारिज किया । इच्छुक पाठक इस गर्म विषय पर द सिस्टम विवाद में चर्चा जारी रख सकते हैं । हालाँकि हम आपको अपने सिर को ठंडा रखने और अपनी आवाज को सभ्य बनाने के लिए प्रोत्साहित करते हैं। Devuan में हम उन्हें वापस देखने की तुलना में गलत प्रोग्रामिंग में अधिक रुचि रखते हैं। [...]

सिस्टम विवाद के लिए समर्पित कुछ वेबसाइट और लेख बनाए गए हैं:

नहीं है एक बहुत हैकर समाचार पर दिलचस्प चर्चा का:

अन्य विकृतियों में भी इसी तरह की प्रवृत्ति देखी जा सकती है:

दर्शन

upstart , DOTADIW के यूनिक्स दर्शन का अनुसरण करता है - "डू वन थिंग एंड डू इट वेल।" यह पारंपरिक इनिट डेमॉन के लिए एक प्रतिस्थापन है। यह सेवाओं को शुरू करने और रोकने के अलावा कुछ नहीं करता है। अन्य कार्यों को अन्य विशिष्ट उपप्रणालियों को सौंप दिया जाता है।

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

विस्तार की योजना

सिस्टम के लिए एक परिप्रेक्ष्य के अनुसार क्या हासिल किया गया है, और 2014 में GNOME.asia में लेनार्ट पोएटरिंग द्वारा लीज़ अहेड प्रस्तुति, यहाँ सिस्टमड के मुख्य उद्देश्य हैं, जो पहले से ही कवर किए गए थे और जो अभी भी प्रगति पर थे:

प्रणालीगत उद्देश्य:

हमारे उद्देश्य

  • एक प्रतिस्पर्धी जनरल प्रयोजन ऑपरेटिंग सिस्टम में बिट्स के बैग से लिनक्स को चालू करना।
  • वितरण के बीच इंटरनेट के अगली पीढ़ी के ओएस का निर्माण करना
  • कोर ओएस में नवीनता वापस लाना

  • डेस्कटॉप, सर्वर, कंटेनर, एंबेडेड, मोबाइल, क्लाउड, क्लस्टर,। । । ये क्षेत्र आपके विचार से कहीं अधिक करीब हैं

  • व्यवस्थापक जटिलता को कम करना, पर्यवेक्षण के बिना विश्वसनीयता
  • सब कुछ आत्मनिरीक्षण
  • ऑटो डिस्कवरी, प्लग एंड प्ले प्रमुख है
  • हम उन चीजों को ठीक करते हैं जहां वे टूट गए हैं, उन पर कभी टेप न करें

पहले से ही शामिल क्षेत्र:

हम पहले से ही क्या कवर करते हैं:

init सिस्टम, जर्नल लॉगिंग, लॉगिन प्रबंधन, डिवाइस प्रबंधन, अस्थायी और वाष्पशील फ़ाइल प्रबंधन, बाइनरी प्रारूप पंजीकरण, बैकलाइट सेव / रिस्टोर, rfkill सेव / रिस्टोर, बूटचार्ट, रीडहेड, एन्क्रिप्टेड स्टोरेज सेटअप, EFI / GPF पार्टीशन डिस्कवरी, वर्चुअल मशीन / कंटेनर पंजीकरण, न्यूनतम कंटेनर प्रबंधन, होस्टनाम प्रबंधन, स्थानीय प्रबंधन, समय प्रबंधन, यादृच्छिक बीज प्रबंधन, sysctl चर प्रबंधन, कंसोल प्रबंधन,। । ।

कार्य प्रगति पर है:

हम किस पर काम कर रहे हैं:

  • नेटवर्क प्रबंधन
  • systemd-networkd
  • स्थानीय DNS कैश, mDNS उत्तरदाता, LLMNR उत्तरदाता, DNSSEC सत्यापन
  • कर्नेल में आई.पी.सी.
  • kdbus, एसडी-बस
  • NTP के साथ समय सिंक्रनाइज़ेशन
  • systemd-timesyncd
  • कंटेनरों के साथ अधिक एकीकरण
  • सेवाओं की सैंडबॉक्सिंग
  • ऐप्स का सैंडबॉक्सिंग
  • ओएस छवि प्रारूप
  • कंटेनर छवि प्रारूप
  • ऐप छवि प्रारूप
  • ऑटो-डिस्कवरी के साथ जीपीटी
  • स्टेटलेस सिस्टम, इंस्टेंटेबल सिस्टम, फैक्ट्री रीसेट
  • / usr OS है
  • / etc है (वैकल्पिक) कॉन्फ़िगरेशन
  • / var (वैकल्पिक) स्थिति है
  • परमाणु नोड आरंभीकरण और अद्यतन
  • बादल के साथ एकीकरण
  • नोड्स के पार सेवा प्रबंधन
  • सत्यापन योग्य OS छवियां
  • फर्मवेयर के लिए सभी तरह से
  • बूट लोड हो रहा है

इस उत्तर का दायरा

जैसा कि fpmurphy1 ने टिप्पणियों में कहा, "यह ध्यान दिया जाना चाहिए कि सिस्टमड ने पिछले कुछ वर्षों में अपने काम के दायरे का विस्तार केवल सिस्टम स्टार्टअप से परे किया है।"

मैंने यहाँ अधिकतर प्रासंगिक जानकारी को शामिल करने की कोशिश की। यहाँ मैं उपस्टार्ट और सिस्टमड के सामान्य फीचर्स की तुलना कर रहा हूँ जब इनिट सिस्टम को प्रश्न के रूप में इस्तेमाल किया जाता है और मैं केवल सिस्टमड के फीचर्स का उल्लेख करता हूं जो एक इनिट सिस्टम के दायरे से परे जाते हैं क्योंकि इनकी तुलना स्टार्टअप से नहीं की जा सकती है, लेकिन उनकी उपस्थिति महत्वपूर्ण है उन दो परियोजनाओं के बीच अंतर को समझने के लिए। अधिक जानकारी के लिए संबंधित दस्तावेज़ की जाँच की जानी चाहिए।

और जानकारी

अधिक जानकारी पर पाया जा सकता है:

अतिरिक्त

LinOxide टीम एक पैदा कर दी है systemd बनाम SysV Init लिनक्स cheatsheet


4
... और डेबियन का ऐसा कांटा हुआ है। Devuan GNU + Linux बिना सिस्टमड के डेबियन का कांटा है।
fpmurphy

2
यह ध्यान दिया जाना चाहिए कि सिस्टमड ने पिछले कुछ वर्षों में अपने काम के दायरे को काफी हद तक सिस्टम स्टार्टअप से आगे बढ़ाया है।
fpmurphy

1
उत्कृष्ट पोस्ट और सेंट आदमी के लिए बेहद उपयोगी। समय निकालने के लिए धन्यवाद सर !!!
उत्पत्ति 1

4
@ronsmith service <foo> start/stop/restart/statusअभी भी ठीक काम करते हैं। अधिकांश यूनिक्स सॉफ़्टवेयर की तरह, सिस्टमड अच्छी तरह से ज्ञात चूक के लिए कमांड संगतता प्रदान करता है।
शादुर

2
बहुत अच्छा जवाब। एक बिंदु हालांकि: बीएसडी ऑपरेटिंग सिस्टम लिनक्स वितरण नहीं हैं: वे अपने स्वयं के कर्नेल के साथ विभिन्न यूनिक्स ऑपरेटिंग सिस्टम हैं।
जियोर्जियो

68

दोनों upstart और systemd पारंपरिक SysV init सिस्टम की सीमाओं के साथ कुछ समस्याओं को हल करने का प्रयास कर रहे हैं। उदाहरण के लिए, कुछ सेवाओं को अन्य सेवाओं के बाद शुरू करने की आवश्यकता होती है (उदाहरण के लिए, आप नेटवर्क चलने तक NFS फाइल सिस्टम को माउंट नहीं कर सकते हैं), लेकिन SysV में एकमात्र तरीका है कि rc # .d निर्देशिका में लिंक सेट करना है। ऐसा है कि एक दूसरे से पहले है। उस पर जोड़ें, आपको बाद में सब कुछ फिर से नंबर करने की आवश्यकता हो सकती है जब निर्भरता जोड़ी जाती है या बदल जाती है। अपस्टार्ट और सिस्टमड में आवश्यकताओं को परिभाषित करने के लिए अधिक बुद्धिमान सेटिंग्स हैं। इसके अलावा, इस तथ्य के साथ समस्या है कि सब कुछ किसी प्रकार की एक शेल स्क्रिप्ट है, और हर कोई सबसे अच्छा इनिट स्क्रिप्ट नहीं लिखता है। यह स्टार्टअप की गति को भी प्रभावित करता है।

मैं देख सकता हूँ systemd के कुछ लाभ:

  • शुरू की गई हर प्रक्रिया को अपना स्वयं का cgroup या एक विशेष cgroup मिलता है।
  • सेवाओं के लिए सॉकेट्स और फ़ाइल हैंडल का पूर्व-निर्माण, इसी तरह की सेवाओं के लिए xinetd कैसे करता है, निर्भर सेवाओं को तेजी से शुरू करने की अनुमति देता है। उदाहरण के लिए, systemd syslog के लिए / dev / log के लिए फाइलहैंडल को खुले रखेगा, और बाद में जो सेवाएं / dev / लॉग भेजेगा, उनके संदेश बफ़र हो जाएंगे जब तक कि syslogd लेने के लिए तैयार न हो जाए।
  • कम प्रक्रिया वास्तव में एक सेवा शुरू करने के लिए चलती है। इसका मतलब है कि आप अपनी सेवा शुरू करने के लिए शेल स्क्रिप्ट नहीं लिख रहे हैं। यह एक गति में सुधार हो सकता है, और (IMO) पहले स्थान पर स्थापित करना आसान है।

एक नुकसान मुझे पता है कि सिस्टमड के सॉकेट / एफएच उपदेश का लाभ उठाने के लिए, कई डेमों को पैच करना होगा ताकि सिस्टमएचडी द्वारा उन्हें एफएच पास किया जा सके।


13
PulseAudio एक बहु-कुंद ध्वनि प्रणाली ( pulseaudio.org ) है, जो मूल रूप से Lennart Poettering द्वारा लिखी गई है, जो systemd के लेखक हैं। मैं ज्यादातर यहां एक मजाक बना रहा था, क्योंकि मैं कई लोगों को जानता हूं जो पल्सेडियो के बारे में शिकायत करना पसंद करते हैं और मुझे यकीन है कि वे सिस्टम के बारे में भी शिकायत करेंगे। ईमानदारी से, मुझे या तो systemd या pulseaudio के साथ कोई समस्या नहीं थी।
jsbillings

4
Plan9 के प्रचुर मात्रा में fiords के लिए एक लगभग पाइन बनाता है ... सब कुछ एक फ़ाइल है।
dhchdhd

4
ईमानदार होने के लिए, पल्सीडियो एक गैर-मौजूद समस्या का समाधान था। कुछ भी नहीं है कि पीए ऐसा नहीं कर सकता है कि एएलएसए नहीं कर सकता है, और मैंने पीए के साथ मुद्दों के लोगों को बार-बार सुना है।
WhyNotHugo

3
आपके द्वारा चूक किए गए दो सिस्टमड नुकसान: (1) सभी स्टार्टअप स्क्रिप्ट को फिर से लिखना होगा। (2) गैर-लाइनक्स ओएस (जैसे बीएसडी, उदाहरण के लिए) के साथ कम संगतता है।
WhyNotHugo

8
सिर्फ महान। कृपया 0pointer.de/blog/projects/the-biggest-myths पर एक नज़र डालें । मैंने सिस्टमैड की वृद्धि देखी, और इस बात की पुष्टि कर सकता हूँ कि यहाँ दी गई आलोचनाएँ पूरी तरह से आधारहीन हैं। लिंक पर आपको झटका, तर्कपूर्ण खंडन द्वारा एक झटका लगेगा ।
वॉनब्रांड २ '

30

सॉ systemdने आज आर्क जनरल एमएल पर उल्लेख किया । तो इस पर पढ़िए। लिनक्स प्रौद्योगिकी के लिए H ऑनलाइन हमेशा एक बेहतरीन स्रोत है और जहाँ मुझे SysV Init और Upstart विकल्प के रूप में Systemd पर शोध शुरू करने के लिए मेरी जगह मिली । हालाँकि एच ऑनलाइन लेख (इस मामले में) बहुत उपयोगी नहीं है, इसके पीछे का वास्तविक उपयोग यह है कि यह उपयोगी रीड्स के लिंक देता है।

असली जवाब सिस्टमड की घोषणा में है । जो SysV initd के साथ क्या गलत है के कुछ महत्वपूर्ण बिंदु देता है, और नई प्रणालियों को क्या करने की आवश्यकता है

  • कम शुरू करने के लिए।
  • और समानांतर में अधिक शुरू करने के लिए।

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

ऐसा लगता है कि योजना का एक और हिस्सा फाइलसिस्टम को क्रमबद्ध नहीं करना है, लेकिन इसके बजाय उन लोगों की मांग पर माउंट करें, जिस तरह से आप अपने इंतजार नहीं कर रहे हैं /home/, आदि ( /etcमाउंट करने के लिए भ्रमित नहीं होना ), और / या fsckजब आप हो सकते हैं। के रूप में डेमॉन शुरू करने /और /var/आदि, पहले से ही घुड़सवार हैं। इसने कहा कि यह इस तक ऑटोफ का उपयोग करने वाला था।

.desktopस्क्रिप्ट के प्रतिस्थापन के रूप में स्टाइल इनिट डिस्क्रिप्टर बनाने का भी इसका लक्ष्य है । यह धीमी shप्रक्रियाओं के टन और ऐसी चीज़ों से प्रक्रियाओं के और भी अधिक कांटे को रोक देगा sedऔर grepजिन्हें अक्सर शेल स्क्रिप्ट में उपयोग किया जाता है।

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

एक अन्य विशेषता स्पष्ट रूप से समय की घटनाओं के आधार पर शुरू करने की क्षमता है, या तो नियमित रूप से निर्धारित अंतराल पर या एक निश्चित समय पर। यह अब क्या crondऔर किसके जैसा है atd। हालांकि मुझे बताया गया था कि यह उपयोगकर्ता "क्रोन" का समर्थन नहीं करेगा। व्यक्तिगत रूप से यह सबसे व्यर्थ बात लगती है। मुझे लगता है कि यह उन लोगों द्वारा लिखा / सोचा गया था जो बहुउपयोगी वातावरण में काम नहीं करते हैं, उपयोगकर्ता क्रोन के लिए बहुत उद्देश्य नहीं है यदि आप सिस्टम पर एकमात्र उपयोगकर्ता हैं, जो रूट के रूप में नहीं चल रहे हैं। मैं रोजाना मल्टीसियर सिस्टम पर काम करता हूं, और नियम हमेशा उपयोगकर्ता स्क्रिप्ट को उपयोगकर्ता के रूप में चलाता है। लेकिन शायद मेरे पास वह दूरदर्शिता नहीं है जो वे करते हैं, और यह किसी भी तरह से ऐसा नहीं करेगा ताकि मैं भाग न सकूं crondया atdऐसा न हो, जिससे मुझे किसी को भी तकलीफ न हो, लेकिन मुझे लगता है कि डेवलपर्स।

सिस्टमड का बड़ा नुकसान यह है कि इसका पूरा फायदा उठाने के लिए कुछ डेमों को संशोधित करना होगा। वे अब काम करेंगे, लेकिन वे बेहतर काम करेंगे अगर वे विशेष रूप से इसके सॉकेट मॉडल के लिए लिखे गए थे।

यह अधिकांश भाग के लिए लगता है कि सिस्टमस्टॉप के लोगों की समस्या के लिए अपस्टार्ट घटना प्रणाली है, और उनका मानना ​​है कि यह समझ में नहीं आता है या अनावश्यक नहीं है। शायद उनके शब्दों ने इसे सर्वश्रेष्ठ बना दिया।

या इसे और सरल बनाने के लिए: तथ्य यह है कि उपयोगकर्ता ने बस डी-बस शुरू किया, यह किसी भी तरह से एक संकेत नहीं है कि NetworkManager को भी शुरू किया जाना चाहिए (लेकिन यह उपस्टार्ट क्या करेगा)। यह दूसरे तरीके से सही है: जब उपयोगकर्ता NetworkManager से पूछता है, तो यह निश्चित रूप से एक संकेत है कि D-Bus को भी शुरू किया जाना चाहिए (जो कि निश्चित रूप से अधिकांश उपयोगकर्ता अपेक्षा करेंगे, ठीक है?)।
एक अच्छी init प्रणाली को केवल वही शुरू करना चाहिए जिसकी आवश्यकता है, और वह ऑन-डिमांड है। या तो आलसी या समानांतर और अग्रिम में। हालाँकि यह आवश्यकता से अधिक शुरू नहीं होना चाहिए, विशेष रूप से सब कुछ स्थापित नहीं जो उस सेवा का उपयोग कर सके।

जैसा कि मैंने पहले ही कहा है कि यह प्रणाली की घोषणा में अधिक व्यापक रूप से चर्चा की गई है


क्षमा करें, लेकिन घोषणा एक पुस्तक की तरह है। मुझे पढ़ना और ग्रॉस करना है, इससे पहले कि मैं वास्तव में यहां और अधिक शामिल कर सकूं।
xenoterracide

2
यह @ जॉन के जवाब से बेहतर कैसे है? क्या यह एक प्लेसहोल्डर है? एच ऑनलाइन का एक प्रोमो ?
tshepang

1
@tshepang अच्छी तरह से यह वास्तव में प्रणाली घ की घोषणा के लिए लिंक करता है और एच ऑनलाइन सामान के लिंक और अन्य दिलचस्प लिंक हैं। यह एक लंबा थकाऊ पढ़ा है। एक बार मैंने इसे जोड़ दिया, तो मैं इसे जोड़ सकता हूं ... यह एक सरल विषय नहीं है । जब मैंने यह लिखा था मुझे लगा कि आप बाद में जल्द से जल्द पढ़ना शुरू कर सकते हैं। लेकिन मुझे नीचे mod करने के लिए स्वतंत्र महसूस हो रहा है। निश्चित रूप से @jsbillings जवाब सभ्य है, और मेरा अब तक बेहतर है। लेकिन घोषणा को पढ़ने के लिए उतना अच्छा नहीं है
xenoterracide

@tshepang मैं शायद कल, बिस्तर के बाद और अधिक जोड़ूंगा। एच ऑनलाइन सामान सिर्फ मुझे एक अच्छा पत्रकार होने और मेरे स्रोतों का हवाला दे रहा था।
xenoterracide

@tshepang। मैंने अपना उत्तर अपडेट कर दिया है। बहुत यकीन है कि मैं तब तक किया जाता हूं जब तक कि irc पर सहायक लोग: //frenode.net/systemd तय न करें कि वे किसी तरह के सुधार की पेशकश करना चाहते हैं।
xenoterracide

11

अच्छी तरह से आप में से एक बात भूल गया cgroups में प्रक्रियाओं का संगठन है ।

तो अगर systemd ने एक चीज शुरू की, तो वह इस चीज को अपने cgroup में रखेगा और उस cgroup से बचने की प्रक्रिया के लिए कोई (unpriviledged) माध्य नहीं है। यहाँ उस के परिणाम हैं:

  • कई उपयोगकर्ताओं के साथ एक बड़ी प्रणाली के एक व्यवस्थापक के पास दुर्भावनापूर्ण उपयोगकर्ताओं / प्रक्रियाओं की पहचान करने के लिए नए तरीके हैं।
  • सीपीयू-शेड्यूलिंग के लिए प्राथमिकताएं "वंडर ऑटोकग्रुप पैच" द्वारा किए गए बेहतर तरीके से निर्धारित की जा सकती हैं ।

8

पहले डिज़ाइन ड्राफ्ट (और मौजूदा इनिट सिस्टम की एक विस्तृत समालोचना, जिसमें अपस्टार्ट शामिल हैं, और कैसे सिस्टमड उन्हें ठीक करने का प्रस्ताव करता है) के साथ शुरू करते हुए, सिस्टमड पर बहुत विस्तृत नज़र के लिए, इसके होम पेज पर जाएँ । समय के साथ, LWN में प्रकाशित स्टार्टअप पर कई लेख आए हैं । बस सलाह दी जाती है कि सिस्टमड (या पल्सीडियो) का कोई भी उल्लेख न होने वाले फ़्लेमर्स को ट्रिगर करे।

IMVHO (और एक फेडोरा उपयोगकर्ता के रूप में) मैं इससे बहुत खुश हूं। वर्तमान लाइनक्स सिस्टम की जटिलता को संभालने के लिए इस लाइन में कुछ समय के लिए अतिदेय था। फेडोरा ने कुछ समय के लिए अपस्टार्ट का उपयोग किया, लेकिन यह sysvinit के लिए फैंसी प्रतिस्थापन होने के चरण से बाहर कभी नहीं निकला, ज्यादातर अपरिवर्तित init स्क्रिप्ट चला रहा था। बूट कॉन्फ़िगरेशन को सरल बनाने का इसका वादा फिर से लागत पर आता हैमैन्युअल रूप से अन्योन्याश्रितियों की स्थापना, और यह सिर्फ काम नहीं करता है। सिस्टमड आंकड़े अपने आप ही निर्भर हो जाते हैं (या निर्भरता की परवाह किए बिना सामान शुरू करने की अनुमति देता है, वे खुद को छांट लेते हैं)। एक और बड़ा फायदा (कुछ का कहना है कि यह एक गंभीर नुकसान है) यह है कि यह लिनक्स-विशिष्ट विशेषताओं को हिल्ट (विशेष रूप से cgroups एक डेमन और उसके सभी वंशों को अलग करने की अनुमति देता है) का शोषण करता है, इसलिए संसाधनों की निगरानी करना, उन्हें सीमित करना या उन्हें मारना आसान है एक समूह; वहाँ कई अन्य हैं)।


3

जर्नलिंग - सिस्टमड का शाब्दिक रूप से WinSXS फ़ोल्डर है जब यह लॉगिंग सामान की बात आती है, तो यह प्रतियों की प्रतियां बनाता है जब तक कि आप मैन्युअल रूप से फ़ाइल के आकार को हटा या कम नहीं करते हैं, यह आपके ड्राइव पर दूर खाने को बनाए रखेगा। मैं इसे बूट लोडर कुकीज़ कहता हूं।


गलत। वे प्रतियाँ नहीं हैं और इसकी विन्यास सीमा freeedesktop.org/software/systemd/man/journald.conf.html है
pal
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.