.d หมายถึงอะไรในชื่อไดเรกทอรี


118

ฉันรู้หลายไดเรกทอรีด้วย. d ในชื่อของพวกเขา:

init.d
yum.repos.d
conf.d

มันหมายถึงไดเรกทอรีหรือไม่ ถ้าใช่สิ่งนี้ทำให้เกิดความเข้าใจผิด?

UPDATE:ฉันมีคำตอบที่น่าสนใจมากมายเกี่ยวกับความ.dหมาย แต่ชื่อคำถามของฉันไม่ได้เลือกอย่างดี ฉันเปลี่ยน "mean" เป็น "stand for"


9
สำหรับที่มาของการ.dดูMSWความคิดเห็น 's ในคำถามที่เกี่ยวข้องนี้ที่ถามอูบุนตู
Gilles

@Gilles, ฮ่าฉันคิดว่ามันช้ากว่า System-V แต่ใช่แล้วยังคงไม่มีความหมายถึง '.d' มันเพิ่งถูกเลือกจากสิ่งที่ฉันสามารถบอกได้
NJ

@Gilles: น่าสนใจคำตอบน่าจะเป็น: คำอธิบายก็หายไป ... ตามความคิดเห็นแรกของคำตอบแรกในลิงค์ของคุณ
4324 greg0ire

ไม่แน่ใจว่าทำไม.dในinit.dแต่ดูเหมือนว่าเกือบทุกไฟล์ config ที่กำหนดเองไปที่.dไดเรกทอรีใน RHEL / CentOS / Fedora
LiuYan 刘研

@Liu Yan - แน่นอนฉันไม่สามารถอธิบายได้ในลักษณะใด ๆ ที่สามารถตีความได้ว่าสอดคล้องกัน
Tim Post

คำตอบ:


102

.dต่อท้ายที่นี่หมายถึงไดเรกทอรี ของหลักสูตรนี้จะไม่จำเป็นเป็น Unix ไม่จำเป็นต้องมีคำต่อท้ายเพื่อแสดงถึงชนิดแฟ้ม แต่ในกรณีที่เฉพาะเจาะจงที่บางสิ่งบางอย่างก็จำเป็นที่จะกระจ่างคำสั่ง ( /etc/init, /etc/rc0, /etc/rc1และอื่น ๆ ) และไดเรกทอรีที่พวกเขาใช้ ( /etc/init.d, /etc/rc0.d, /etc/rc1.d, .. )

อนุสัญญานี้ได้รับการแนะนำอย่างน้อยกับ Unix System V แต่อาจเป็นไปได้ก่อนหน้านี้ initคำสั่งที่ใช้จะอยู่ใน/etcแต่โดยทั่วไปในขณะนี้/sbinบนระบบปฏิบัติการระบบวีที่ทันสมัย

โปรดทราบว่าการประชุมนี้ได้รับการยอมรับจากหลาย ๆ แอปพลิเคชันที่ย้ายจากไฟล์การกำหนดค่าไฟล์เดียวไปยังไฟล์การกำหนดค่าหลายไฟล์ที่อยู่ในไดเรกทอรีเดียวเช่น: /etc/sudoers.d

ที่นี่อีกครั้งเป้าหมายคือการหลีกเลี่ยงการปะทะกันของชื่อไม่ใช่ระหว่างไฟล์เรียกทำงานและไฟล์กำหนดค่า แต่ระหว่างไฟล์กำหนดค่าแบบเสาหินเก่ากับไดเรกทอรีที่มีอยู่


4
+1, ฉันคิดว่าคุณพูดถูก แต่ไม่มีใครให้คำกล่าวถึงทฤษฎีของเขาได้เลย
greg0ire

ฉันคิดว่ามันเป็นการประชุมที่ทำให้ผู้คนเติบโตมากกว่ามาตรฐานที่ชัดเจนจริง ๆ
Shadur

1
เมื่อคุณทำlsคำสั่ง (ไม่ls -al) โดยไม่ใช้--colorตัวเลือก (ระบุอย่างชัดเจนหรือเป็นส่วนหนึ่งของLS_OPTIONSตัวแปรสภาพแวดล้อม) การมี ".d" ทำให้ไดเรกทอรีโดดเด่นจากรายการ นั่นเป็นเหตุผลที่ฉันคิดเสมอว่ามันเสร็จแล้ว
LawrenceC

^ colorไม่ใช่วิธีเดียวหรือดีที่สุดในการตั้งค่าสถานะไดเรกทอรีทางสายตา ls -Fจะทำสิ่งนั้นและสิ่งที่มีประโยชน์อื่น ๆ อีกมากมาย
underscore_d

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สิ่งอื่น ๆ นั้นมีความหมายมากกว่าฉัน! แต่แหล่งข้อมูลนี้แสดงเหตุผลของ Debian เพียงอย่างเดียวในบริบทเดียวโดยใช้การประชุมที่มีมาตั้งแต่ยุคแรก ๆ ของ Unix ฉันต้องสงสัยว่าผู้ดูแล Debian คนนี้ตั้งใจทำให้เป็นเรื่องง่ายขึ้นหรือไม่หรือ Debian คิดว่าเป็นผู้คิดค้นวิธีการนี้
underscore_d

11

หากคุณพูดถึง ".d" ในตอนท้ายของชื่อไดเรกทอรีคำตอบนี้ถูกต้องมันเป็นเพียงเครื่องหมายสำหรับ "ไดเรกทอรี"

เพียงแค่ไม่สับสนกับ "D" ที่และชื่อไฟล์เช่น "syslogd" ซึ่งย่อมาจากภูต กระบวนการคอมพิวเตอร์ทำงานในพื้นหลัง

กระบวนการหลักของ daemon มักจะ (แต่ไม่เสมอไป) กระบวนการเริ่มต้น (PID = 1) กระบวนการมักจะกลายเป็น daemons โดยการฟอร์กกระบวนการลูกและจากนั้นให้กระบวนการแม่ของพวกเขาออกทันทีจึงทำให้ init ที่จะนำมาใช้กระบวนการเด็ก นี่เป็นมุมมองที่ค่อนข้างง่ายของกระบวนการเนื่องจากการดำเนินการอื่น ๆ จะดำเนินการโดยทั่วไปเช่นการแยกการเชื่อมโยงกระบวนการ daemon ออกจากการควบคุม tty ใด ๆ รูทีนการอำนวยความสะดวกเช่น daemon (3) มีอยู่ในระบบ UNIX บางระบบสำหรับจุดประสงค์นั้น


ไม่ได้จริงๆนี่คือชื่อไดเรกทอรี
Keith

@ คี ธ : โอ๊ะโอฉันคิดผิดว่าเขาพูดถึงไฟล์ที่ลงท้ายด้วย "d" เช่นsyslogdไม่ใช่ไดเรกทอรีที่ลงท้ายด้วย ".d" ฉันจะแก้ไขเร็ว ๆ นี้
Philomath

นั่นคือสิ่งที่ผมคิดว่า แต่ฉันเห็นว่ามันมักจะใช้ในไดเรกทอรีการกำหนดค่าสำหรับโปรแกรมที่ไม่ daemonize เช่นsysctl.d, modprobe.d.. ว่าจะเป็นการใช้งานที่ไม่เหมาะสม
Tim Post

@Tim Post: ดู 2 ความคิดเห็นข้างบน (และคำตอบของ Keith) ฉันจะแก้ไขคำตอบของฉันในไม่ช้า
Philomath

แก้ไขแล้ว (15 chr)
Philomath

4

มันไม่ได้หมายถึงไดเรกทอรีต่อ se โดยทั่วไปสิ่งที่เกิดขึ้นคือไดเรกทอรีที่ลงท้ายด้วย.d(หมายเหตุเหล่านี้มักจะเคยอยู่ใน/etc) ใช้เวลาส่วนการกำหนดค่า

สิ่งนี้ได้รับการออกแบบมาเพื่อให้ distros สามารถรวมค่าเริ่มต้นสากลไว้ได้/etc/yum.confแต่จากนั้นมีวิธีการใช้งานที่ง่ายสำหรับผู้ใช้หรือแพ็คเกจอื่น ๆ เพื่อผนวกการกำหนดค่า yum ของตัวเองในวิธีที่ปลอดภัยที่จะไม่ถูกเขียนทับ

เป็นตัวอย่างสำหรับยำ ...

หากฉันต้องการเริ่มใช้ EPEL บน RHEL5 หรือ CentOS Box ของฉันฉันสามารถกำหนดค่าที่เก็บใหม่ใน/etc/yum.repos.dโฟลเดอร์ (พูด/etc/yum.repos.d/epel.repo) หรือติดตั้งแพ็คเกจ epel-release ที่สร้างไฟล์โดยอัตโนมัติโดยไม่ต้องแก้ไขการตั้งค่าเริ่มต้นของฉัน ไม่จำเป็นต้องเกิดขึ้น

สิ่งที่จะเกิดขึ้นคือโปรแกรมส่วนใหญ่จะอ่านการกำหนดค่าเริ่มต้น ( /etc/yum.confเช่น) จากนั้นวนซ้ำ.dโฟลเดอร์รวมถึงตัวอย่างการกำหนดค่าในโปรแกรมที่กำลังทำงานอยู่

หวังว่ามันจะอธิบายให้คุณ


+1 นี่อธิบายได้มากมาย แต่ ... ไม่ใช่ตัวเลือกของตัวอักษร 'd'
greg0ire

1
จะต้องมีคำอธิบายสำหรับตัวเลือกหรือไม่? มันเป็นเพียงการประชุมที่พัฒนาขึ้นตามกาลเวลาไม่ใช่จาก (ดูอย่างรวดเร็ว) ที่กำหนดไว้ใน FHS แต่อาจรวมอยู่ในมาตรฐาน LSB Cron เป็นคนแรกที่ฉันจำได้ (แก้ไข: อันที่จริงมันจะเป็น init)
NJ

3

เช่นเดียวกับไฟล์ที่สามารถ.extระบุประเภทของไฟล์ (ปกติเรียกว่า "นามสกุล") บางครั้งไดเรกทอรีต้อง.dแสดงว่าเป็นไดเรกทอรีไม่ใช่ไฟล์ นั่นคือประเภทของมัน lsเอาต์พุตเริ่มต้นไม่ได้แยกความแตกต่างของไดเรกทอรีและไฟล์ดังนั้นจึง.dเป็นเพียงการประชุมเก่าที่จะแสดงประเภท (ไดเรกทอรี) ในรายการดังกล่าว


6
นอกจากนี้.dคำต่อท้ายจะป้องกันการชนด้วยไฟล์ที่มีชื่อคล้ายกัน ตัวอย่างเช่นคุณสามารถมีการตั้งค่าไฟล์และไดเรกทอรีของแฟ้มการกำหนดค่า/etc/apt/sources.list /etc/apt/sources.list.d
jmtd

2
ฉันอยากบอกว่านั่นไม่ใช่ "การเพิ่ม" แต่เป็นเหตุผลสำหรับการประชุมในตอนแรก Unix / Linux ไม่เคยมีค่ามากนักเกี่ยวกับการรวมส่วนขยายไว้กับสิ่งต่าง ๆ โดยเฉพาะอย่างยิ่งในช่วงแรก ๆ ดังนั้นฉันจึงสงสัยว่าสิ่งนี้จะถูกส่งไปโดยไม่มีเหตุผล
underscore_d

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 ในทำนองเดียวกัน chkconfig ไปยังไฟล์ใน /etc/init.d, งาน cron ใน /etc/cron.d


+1 แต่ ... พูดเหมือนข้างบน
greg0ire

1
@ รวม: เนื่องจากวิธีการเรียงลำดับคำตอบที่หลากหลาย "เหนือ" และ "ด้านล่าง" เป็นวิธีที่ไม่ดีในการอ้างถึง (ความคิดเห็นบน) คำตอบอื่น ๆ การเรียงลำดับ 'เก่าที่สุด' และ 'ใหม่ล่าสุด' จะสร้างความหมายตรงกันข้ามสำหรับคำอธิบายตามตำแหน่งดังกล่าวและเมื่อเรียงลำดับโดย 'โหวต' ตำแหน่งสัมพัทธ์ของคำตอบสองคำอาจเปลี่ยนแปลงได้ตลอดเวลา
Chris Johnsen

@ Chris Johnsen: นี่คือสิ่งที่ฉันรู้ แต่ก็สายเกินไป ฉันหมายถึงความคิดเห็นของฉันเกี่ยวกับคำตอบของนิวเจอร์ซีย์
greg0ire

1

ฉันคิดว่า แต่ไม่สามารถทำเอกสารได้.dแสดงว่าไดเรกทอรีนั้นเชื่อมโยงกับd aemon

หลักฐานจะบ่งบอกว่านี่เป็นไปได้อย่างน้อย:

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

ที่ไหนสักแห่งในซอกลึกของประวัติศาสตร์เล็ก ๆ ของ Unix โบราณที่ยังคงสั่นคลอนอยู่ด้านหลังของจิตใจของฉันหลังใยแมงมุมสิ่งนี้เรียกร้องให้ฉันเป็นคำตอบที่ถูกต้อง ฉันเชื่อว่าอาจมาจากช่วงเวลาที่สัตว์เลี้ยงลูกด้วยนมคนแรกท่องโลกก่อนที่ไดโนเสาร์จะเริ่มตายและmanหน้าไม่เพียง แต่ถูกเก็บไว้ในระบบ แต่ยังมีร่างกายอยู่ในชั้นวางที่วัดด้วยเท้า


+1 สำหรับเพ้อตอนท้าย แต่ฉันคิดว่ามันไม่เหมาะกับ yum.repos.d ...
greg0ire

</cobwebs>ฉันเชื่อว่าคำตอบที่บ่งบอกว่าจุดประสงค์ของการทำ.dคือยกเลิกการสร้างไดเรกทอรีจากไฟล์ที่เกี่ยวข้องและมีชื่อคล้ายกันนั้นเป็นสิ่งที่ถูกต้อง ฉันโหวต E-man และ jlliagre แล้ว
Dennis Williamson

คำถามคือ ".d 'หมายถึงอะไร" และฉันได้รับคำอธิบายมากมายเกี่ยวกับเหตุผลว่าทำไมจึงมี' .d 'แต่มีเพียงไม่กี่คนที่ให้คำตอบเกี่ยวกับความหมายไม่ได้อ้างถึงแหล่งที่มา ส่วนตัวฉันคิดว่ามันหมายถึงไดเรกทอรี
greg0ire

1
yumเป็นการประดิษฐ์ล่าสุด
Dennis Williamson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.