.D निर्देशिका नामों में क्या है?


118

मुझे पता है कि उनके नाम के साथ कई निर्देशिकाएँ हैं:

init.d
yum.repos.d
conf.d

क्या इसका मतलब निर्देशिका है? यदि हाँ, तो इससे क्या अवहेलना होती है?

अद्यतन: मेरे पास कई दिलचस्प जवाब हैं कि क्या .dसाधन हैं, लेकिन मेरे प्रश्न का शीर्षक अच्छी तरह से चुना नहीं गया था। मैंने "मतलब" को "स्टैंड फॉर" में बदल दिया।


9
मूल के लिए .d, उबंटू के इस संबंधित प्रश्न पर msw की टिप्पणी देखें ।
गिल्स

@ गिल्स, हा, मैं सोच रहा था कि यह बाद में सिस्टम-वी की तुलना में था, लेकिन हाँ, यहां तक ​​कि अभी भी '.d' का कोई मतलब नहीं है, यह सिर्फ वही है जिसे मैं बता सकता हूं।
एनजे

@ गिल्स: दिलचस्प, जवाब लगता है: स्पष्टीकरण खो गया था ... आपके लिंक में पहले उत्तर की पहली टिप्पणी के अनुसार
greg0ire

सुनिश्चित नहीं हैं कि क्यों .dमें init.dहै, लेकिन यह लगभग सभी लगता कस्टम config फ़ाइलों के लिए जाना .dRHEL / CentOS / फेडोरा में निर्देशिका।
लियूयान

@ लियु यान - वास्तव में, मैं इसे किसी भी तरीके से नहीं समझा सकता था जिसे सुसंगत माना जा सकता है।
टिम पोस्ट

जवाबों:


102

.dप्रत्यय यहाँ निर्देशिका का मतलब है। बेशक, यह अनावश्यक होगा के रूप में यूनिक्स एक फ़ाइल प्रकार निरूपित करने के लिए एक प्रत्यय की आवश्यकता नहीं है लेकिन यह है कि विशिष्ट मामले में, कुछ (आदेशों को स्पष्ट करने के लिए जरूरी हो गया था /etc/init, /etc/rc0, /etc/rc1और इसी तरह) और निर्देशिका वे का उपयोग ( /etc/init.d, /etc/rc0.d, /etc/rc1.d,। ..)

यह सम्मेलन कम से कम यूनिक्स सिस्टम वी के साथ पेश किया गया था लेकिन संभवतः पहले। initआदेश में स्थित हो करने के लिए इस्तेमाल /etcलेकिन आम तौर पर अब में है /sbinआधुनिक सिस्टम वी OSes पर।

ध्यान दें कि इस कन्वेंशन को एकल फ़ाइल कॉन्फ़िगरेशन फ़ाइल से एक ही निर्देशिका में स्थित कई कॉन्फ़िगरेशन फ़ाइलों में ले जाने वाले कई अनुप्रयोगों द्वारा अपनाया गया है, उदाहरण के लिए: /etc/sudoers.d

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


4
+1, मुझे लगता है कि आप सही हैं, लेकिन अभी तक किसी ने भी अपने सिद्धांत के लिए कोई उद्धरण नहीं दिया है
greg0ire

यह एक ऐसे सम्मेलन से अधिक है जो लोगों पर एक वास्तविक स्पष्ट मानक की तरह बढ़ता है, मुझे लगता है
Shadur

1
जब आप विकल्प (या तो स्पष्ट रूप से निर्दिष्ट या पर्यावरण चर का हिस्सा ) का उपयोग किए बिना एक lsकमांड (नहीं ls -al) करते हैं, --colorतो LS_OPTIONS".d" होने से निर्देशिकाएं सूची से बाहर हो जाती हैं। इसलिए मैंने हमेशा सोचा कि यह किया गया था।
LawrenceC

^ colorनेत्रहीन झंडा निर्देशिका के लिए एकमात्र या सबसे अच्छा तरीका नहीं है। ls -Fऐसा करेंगे और कई और उपयोगी चीजें।
अंडरस्कोर_ड

56

डेबियन मेलिंग सूची से लिया गया अंश (जोर दिया गया):

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

सबसे आम कन्वेंशन को अपनाया गया जिसमें कॉन्फ़िगरेशन फ़ाइलों से भरा एक निर्देशिका शामिल है, जहां उस निर्देशिका में कुछ भी सक्रिय हो जाता है और उस कॉन्फ़िगरेशन का हिस्सा बन जाता है। चूंकि यह सम्मेलन अधिक व्यापक हो गया था, इसलिए उस निर्देशिका को आमतौर पर कॉन्फ़िगरेशन फ़ाइल के नाम पर रखा गया था जो इसे प्रतिस्थापित या संवर्धित कर रही थी। लेकिन चूँकि किसी के पास निर्देशिका और उसी नाम की फ़ाइल नहीं हो सकती है, इसलिए किसी विधि को अलग करने की आवश्यकता थी, इसलिए .D को कॉन्फ़िगरेशन फ़ाइल नाम के अंत में जोड़ा गया था। इसलिए, एक विन्यास फ़ाइल / etc / Muttrc को /etc/Muttrc.d, / etc / bash_completion में टुकड़ों द्वारा संवर्धित किया गया था /etc/bash_completion.d/*, और इसके आगे। उस कन्वेंशन पर कभी-कभी मामूली बदलाव का उपयोग किया जाता है, जैसे /etc/xinetd.d को पूरक /etc/xinetd.conf, या / etc / apache2 / conf के रूप में। d को पूरक /etc/apache2/apache2.conf। लेकिन यह एक ही मूल विचार है।

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


भाग 2 के लिए, ".d" का कारण, मेरा सबसे अच्छा अनुमान "वितरित" होगा, मुख्य कॉन्फ़िगरेशन फ़ाइल के भाग के रूप में नहीं, लेकिन फिर भी कॉन्फ़िगरेशन का हिस्सा है


8
हैरानी की बात है ... मैंने सोचा होगा कि यह "निर्देशिका" के पक्ष में बोली जाती है, जिसका अर्थ है "यह कॉन्फ़िगरेशन का निर्देशिका हिस्सा है"।
greg0ire

2
यह स्पष्ट रूप से करता है। क्यों कोई इसे पढ़ेगा और निष्कर्ष निकालेगा कि .dमेरे अलावा कुछ भी नहीं है! लेकिन यह स्रोत केवल एक संदर्भ में, यूनिक्स के शुरुआती दिनों से मौजूद एक सम्मेलन का उपयोग करते हुए, डेबियन के तर्क को दर्शाता है। मुझे आश्चर्य है कि क्या यह डेबियन अनुचर जानबूझकर सरल बना रहा था - या वास्तव में सोचा कि डेबियन ने इस अभ्यास का आविष्कार किया है।
अंडरस्कोर_ड

11

यदि आप निर्देशिका नामों के अंत में ".d" के बारे में बोलते हैं, तो यह उत्तर सही है, यह "निर्देशिका" के लिए केवल एक मार्कर है।

बस इसे फ़ाइल नाम पर "d" और "syslogd" की तरह भ्रमित न करें, जो डेमॉन के लिए है । एक कंप्यूटर प्रक्रिया पृष्ठभूमि में चल रही है।

एक डेमन की मूल प्रक्रिया अक्सर (लेकिन हमेशा नहीं) इनिट प्रक्रिया (पीआईडी ​​= 1) होती है। आमतौर पर प्रक्रियाएं एक बच्चे की प्रक्रिया को रोककर और फिर उनकी मूल प्रक्रिया से तुरंत बाहर निकल जाने के कारण डेमन बन जाती हैं, जिससे बच्चे की प्रक्रिया को अपनाने में असुविधा होती है। यह प्रक्रिया का कुछ हद तक सरलीकृत दृष्टिकोण है क्योंकि आम तौर पर अन्य ऑपरेशन किए जाते हैं, जैसे किसी नियंत्रित ट्टी से डेमन प्रक्रिया को अलग करना। डेमन (3) जैसी सुविधा दिनचर्या कुछ यूनिक्स प्रणालियों में मौजूद है।


वास्तव में नहीं, ये निर्देशिका नाम हैं।
कीथ

@ कीथ: उफ़, मैंने गलती से सोचा कि वह "डी" के साथ समाप्त होने वाली फ़ाइलों के बारे में बोलती है, जैसे syslogd, "। डी" के साथ समाप्त होने वाली नहीं। मैं जल्द ही संपादित करूँगा।
फिलोमथ

यही मैंने सोचा था, लेकिन मुझे लगता है कि यह अक्सर प्रोग्रामों के लिए कॉन्फ़िगरेशन निर्देशिकाओं में उपयोग किया जाता है जो डेमोनाइज़ नहीं करते हैं, जैसे sysctl.d, modprobe.d.. क्या यह एक अनुचित उपयोग होगा?
टिम पोस्ट

@ समय पोस्ट: उपरोक्त 2 टिप्पणियां देखें (और कीथ का जवाब), मैं जल्द ही अपना जवाब संपादित करूंगा।
फिलोमथ

संपादित (15 chr)
फिलोमथ

4

इसका मतलब यह नहीं है कि निर्देशिका प्रति se, मूल रूप से क्या हो रहा है कि निर्देशिका जो अंत में होती हैं .d(ध्यान दें कि ये आमतौर पर केवल कभी होती हैं /etc), कॉन्फ़िगरेशन भागों को लें।

यह इसलिए बनाया गया है कि डिस्ट्रोस में सार्वभौमिक डिफॉल्ट शामिल हो सकते हैं उदाहरण के लिए /etc/yum.conf, लेकिन फिर उपयोगकर्ताओं या अन्य पैकेजों के लिए अपने स्वयं के यम कॉन्फ़िगरेशन को सुरक्षित तरीके से जोड़ने के लिए एक आसान तरीका का उपयोग करना आसान नहीं है।

यम के लिए एक उदाहरण के रूप में ...

अगर मैं अपने आरएचईएल 5 या सेंटोस बॉक्स पर ईपीईएल का उपयोग करना शुरू करना चाहता हूं, तो मैं /etc/yum.repos.dफ़ोल्डर में एक नया भंडार कॉन्फ़िगर कर सकता हूं , (कह सकता हूं /etc/yum.repos.d/epel.repo) या एपेल-रिलीज पैकेज स्थापित कर सकता हूं जो कि मेरे डिफ़ॉल्ट कॉन्फ़िगरेशन को संशोधित किए बिना या स्वचालित रूप से फ़ाइल को नुकसान पहुंचाए बिना फ़ाइल बनाता है होने की जरूरत नहीं है।

क्या होगा, अधिकांश प्रोग्राम उनके डिफ़ॉल्ट कॉन्फ़िगरेशन ( /etc/yum.confउदाहरण के लिए) को पढ़ेंगे और फिर .dचल रहे प्रोग्राम में कॉन्फ़िगरेशन स्निपेट्स सहित उनके फ़ोल्डरों पर पुनरावृति करेंगे ।

आशा है कि यह आपके लिए इसे समझाता है।


+1, यह बहुत कुछ समझाता है, लेकिन ... 'd' अक्षर का विकल्प नहीं है।
greg0ire

1
क्या पसंद के लिए स्पष्टीकरण होना चाहिए? यह सिर्फ एक सम्मेलन है जो समय के साथ विकसित हुआ है, यह एफएचएस में परिभाषित (त्वरित नज़र से) नहीं है, लेकिन इसे एलएसबी मानक में शामिल किया जा सकता है। क्रोन मुझे याद करते हुए पहले में से एक था। (संपादित करें: वास्तव में यह init होगा)
NJ

3

जैसे फाइलों में यह .extनिर्दिष्ट करना होता है कि यह किस प्रकार की फाइल है (जिसे आमतौर पर "एक्सटेंशन" कहा जाता है), निर्देशिकाओं को कभी-कभी .dयह दिखाना होता है कि यह एक निर्देशिका है और फाइल नहीं। वह इसका प्रकार है। डिफ़ॉल्ट lsआउटपुट नेत्रहीन निर्देशिका और फ़ाइलों को अलग नहीं करता है, इसलिए .dऐसी लिस्टिंग में इसका प्रकार (निर्देशिका) दिखाने के लिए सिर्फ एक पुराना सम्मेलन है।


6
इसके अलावा .dप्रत्यय एक समान नाम वाली फ़ाइल के साथ टकराव को रोकता है। उदाहरण के लिए, आपके पास कॉन्फ़िगरेशन फ़ाइल /etc/apt/sources.listऔर कॉन्फ़िगरेशन फ़ाइलों की निर्देशिका हो सकती है /etc/apt/sources.list.d
jmtd

2
^ मैं यह कहना चाहूंगा कि यह एक "जोड़" नहीं है, लेकिन पहली बार में सम्मेलन के लिए बहुत कारण है। यूनिक्स / लिनक्स कभी भी चीजों पर एक्सटेंशन को शामिल करने के लिए अनमोल नहीं रहा है, खासकर शुरुआती दिनों में, इसलिए मुझे संदेह है कि यह एक अच्छा कारण के बिना चारों ओर बांधा गया था।
अंडरस्कोर_ड

2

अधिक आम तौर पर, .d निर्देशिका (/etc/httpd/conf.d, /etc/rc.d, / etc / एक और उदाहरण है), इंगित करता है कि निहित फ़ाइलों को पढ़ा और उपयोग किया जाएगा, अक्सर कॉन्फ़िगरेशन के लिए, यदि वे मेल खाते हैं। किसी दिए गए पैटर्न और स्पष्ट रूप से कुछ मास्टर सूची में जोड़े जाने की आवश्यकता नहीं है।

इसलिए यदि आप फॉर्म की फाइलें * .repo से /etc/yum.repos.d पर जोड़ते हैं, तो yum इसका उपयोग तब करेगा जब इसे बिना विन्यास /etc/yum.conf की सूची में जोड़ने की आवश्यकता के बिना चल रहा हो। यदि आप फॉर्म की फाइलें * .conf /etc/http/conf.d में जोड़ते हैं, तो उन्हें Apache द्वारा बिना स्पष्ट रूप से /etc/httpd/conf/httpd.conf में जोड़े बिना पढ़ा जाएगा। इसी तरह, /etc/init.d में फाइल को chkconfig, /etc/cron.d में क्रोन जॉब्स।


+1, लेकिन ... ऊपर जैसा टिप्पणी।
greg0ire

1
@ समूह: उत्तर छाँटने के तरीकों की विविधता के कारण, "ऊपर" और "नीचे" अन्य उत्तरों के लिए (टिप्पणियों पर) संदर्भित करने के लिए खराब तरीके हैं। इस तरह के स्थिति-आधारित विवरणों के लिए 'सबसे पुराना' और 'नवीनतम' प्रकार विपरीत अर्थ उत्पन्न करते हैं, और जब दो मतों की सापेक्ष स्थिति 'वोटों' द्वारा छँटाई जाती है तो समय के साथ बदल सकती है।
क्रिस जॉन्सन

@ क्रिस जॉन्सन: यह मुझे एहसास हुआ, लेकिन बहुत देर हो चुकी है। मैं एनजे के जवाब पर अपनी टिप्पणी का उल्लेख कर रहा था।
greg0ire

1

मुझे लगता है, लेकिन दस्तावेज़ नहीं कर सकते, यह .dइंगित करता है कि निर्देशिका डी एनेम के साथ जुड़ी हुई है।

साक्ष्य इंगित करेगा कि यह कम से कम प्रशंसनीय है:

sudo find / -maxdepth 3 -name "*.d"

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


अंत में प्रलाप के लिए +1, लेकिन मुझे लगता है कि यह yum.repos.d के साथ अच्छी तरह से फिट नहीं है ...
greg0ire

</cobwebs>मेरा मानना ​​है कि ऐसे उत्तर जो यह दर्शाते हैं कि इसका उद्देश्य .dनिर्देशिका को संबंधित से अलग करना है और इसी प्रकार नामित फाइलें सही हैं। मैंने E-man's और jlliagre's को उतारा है।
डेनिस विलियमसन

सवाल यह है कि ".d 'स्टैंड क्या है", और मुझे इस' .d 'के कारण के बारे में बहुत सारे स्पष्टीकरण प्राप्त हुए हैं, लेकिन जो कुछ अर्थ के बारे में जवाब देता है, उसने किसी भी स्रोत का उद्धरण नहीं दिया है। वैयक्तिक, मुझे लगता है कि इसका मतलब निर्देशिका है।
greg0ire

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