อะไรคือความแตกต่างระหว่าง / etc / init / และ /etc/init.d/?


230

ความแตกต่างระหว่าง/etc/init/และ/etc/init.d/คืออะไร?

โดยทั่วไปแล้ว.dคำต่อท้ายถ่ายทอดความหมายอะไรกับไดเรกทอรี

คำตอบ:


229

/etc/init.dมีสคริปต์ที่ใช้โดยเครื่องมือ init ของ System V (SysVinit) นี่เป็นแพคเกจการจัดการบริการแบบดั้งเดิมสำหรับ Linux ซึ่งมีinitโปรแกรม (กระบวนการแรกที่รันเมื่อเคอร์เนลเสร็จสิ้นการกำหนดค่าเริ่มต้นแล้ว) รวมถึงโครงสร้างพื้นฐานบางอย่างเพื่อเริ่มและหยุดบริการและกำหนดค่า โดยเฉพาะไฟล์ใน/etc/init.dสคริปต์เปลือกที่ตอบสนองต่อstart, stop, restartและ (เมื่อได้รับการสนับสนุน) reloadคำสั่งในการจัดการบริการเฉพาะ สคริปต์เหล่านี้สามารถเรียกใช้โดยตรงหรือ (โดยทั่วไป) ผ่านทริกเกอร์อื่น ๆ (โดยทั่วไปจะมีลิงก์สัญลักษณ์/etc/rc?.d/)

/etc/initมีไฟล์การกำหนดค่าที่ใช้โดยพุ่งพรวด พุ่งพรวดเป็นแพ็คเกจการจัดการบริการรุ่นใหม่ที่ได้รับการสนับสนุนจาก Ubuntu แฟ้มใน/etc/initแฟ้มการกำหนดค่าจะบอกพุ่งพรวดวิธีและเมื่อstart, stop, reloadการกำหนดค่าหรือสอบถามstatusการให้บริการ ในแง่ที่ชัดเจน Ubuntu กำลังเปลี่ยนจาก SysVinit เป็น Upstart ซึ่งอธิบายว่าทำไมบริการหลายอย่างมาพร้อมกับสคริปต์ SysVinit แม้ว่าไฟล์ Upstart จะเป็นที่ต้องการก็ตาม อันที่จริงแล้วสคริปต์ SysVinit ถูกประมวลผลโดยเลเยอร์ความเข้ากันได้ใน Upstart

.dในชื่อไดเรกทอรีโดยทั่วไปจะระบุไดเรกทอรีที่มีไฟล์การกำหนดค่าหรือสคริปต์จำนวนมากสำหรับสถานการณ์เฉพาะ (เช่น/etc/apt/sources.list.dมีไฟล์ที่ต่อกันเพื่อสร้างเสมือนsources.list; /etc/network/if-up.dมีสคริปต์ที่ดำเนินการเมื่อเปิดใช้งานเครือข่ายฉัน nter f ace) โครงสร้างนี้มักจะใช้เมื่อแต่ละรายการในไดเรกทอรีจัดทำโดยแหล่งที่แตกต่างกันเพื่อให้แต่ละแพ็คเกจสามารถฝากปลั๊กอินของตัวเองโดยไม่ต้องแยกวิเคราะห์ไฟล์การกำหนดค่าเดียวเพื่ออ้างอิงตัวเอง ในกรณีนี้มันเกิดขึ้นที่“ init” เป็นชื่อโลจิคัลสำหรับไดเรกทอรี SysVinit มาก่อนและใช้init.dและพุ่งพรวดใช้ธรรมดาinitสำหรับไดเรกทอรีที่มีจุดประสงค์คล้ายกัน (อาจเป็น "กระแสหลัก" มากกว่าและอาจเย่อหยิ่งน้อยลงหากใช้/etc/upstart.dแทน)

¹ ไม่นับ initrd


28
บันทึกทางประวัติศาสตร์ที่ลึกลับ: .dไดเรกทอรีที่ป้อนด้วย System V มันเป็นสัญกรณ์ที่ทำให้งงและในที่สุดก็อาจเป็นความคิดของคน ๆ หนึ่งที่เข้าสู่ codebase และไม่สามารถออกไปได้ ตัวอย่างเช่นหากคุณคิดว่าcatเป็นชื่อที่ไม่ดีสำหรับงานนั้นลองนึกภาพว่ามีไฟล์กี่ไฟล์ในระบบที่คุณต้องแตะเพื่อเปลี่ยน
msw

บนระบบที่มีทั้งไดเร็กทอรีซึ่ง Upstart และ SysVinit ถูกใช้? มีวิธีการตรวจสอบหรือไม่?
asheeshr

3
@AsheeshR ตรวจสอบว่ามีเป็นแพคเกจที่เรียกว่าหรือupstart sysvinitและในเวอร์ชันล่าสุดอาจsystemdเป็นเช่นนั้น (ซึ่งไม่มีอยู่สำหรับ Ubuntu ย้อนกลับไปเมื่อฉันเขียนคำตอบของฉัน) มันเป็นแพคเกจแล้วแต่จำนวนใดให้/sbin/init( dpkg -S /sbin/init)
Gilles

ในอินสแตนซ์ของ AWS Ubuntu ที่ฉันใช้ (จาก Bitnami) เป็นupstartแพ็คเกจที่ให้ / sbin / init (วิ่งdpkg -S /sbin/init) แต่ Bitnami ได้วางสคริปต์ไว้ในไดเรกทอรี /etc/init.d สิ่งนี้ขัดแย้งกับคำตอบของคุณที่ @AsheeshR ข้างต้นหรือไม่ ขอขอบคุณ.
Sabuncu

@Sabuncu นี่เป็นตัวอย่างของ“ สคริปต์ SysVinit ถูกประมวลผลโดยเลเยอร์ความเข้ากันได้ใน Upstart”
Gilles

29

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

ตัวอย่างเช่น/etc/apache/conf.d/หรือ/etc/apt/sources.d/

ในกรณีที่เป็นสิ่งสำคัญที่ควรรวมหรือดำเนินการตามลำดับไฟล์ในไดเรกทอรีเหล่านี้บางครั้งเริ่มต้นด้วยตัวเลขเช่น "00- ค่าเริ่มต้น" หรือ "80 ผู้ใช้" เพื่อให้สามารถดำเนินการตามลำดับที่ถูกต้อง

ในกรณีที่/etc/init.d/มันเรียงลำดับของบ่งชี้ว่าสคริปต์ใน "init.d" ควรถูกดำเนินการทั้งหมด อย่างไรก็ตามในปัจจุบันระบบเริ่มต้นของระบบปฏิบัติการที่ทันสมัยมีความเกี่ยวข้องมากกว่านั้นเล็กน้อย แต่ชื่อไดเรกทอรียังคงอยู่ที่นั่น


อาจ.dหมายถึงว่ามันเกี่ยวข้องกับกระบวนการ 'deamon' ซึ่งโดยปกติจะเริ่มในเวลาบูต

21
.d แน่นอนสำหรับไดเรกทอรีไม่ใช่ daemon
Martin

13

เมื่อคุณชี้ให้เห็นระบบการตั้งชื่อ ".d" นั้นทำให้งงงวยและแปลกและไม่มีสถานที่ใดในระบบที่ทันสมัยใด ๆ เลย - คุณจะสังเกตได้ว่าบริการที่ทันสมัยส่วนใหญ่มักจะวางไว้

เหตุผลที่ไดเรกทอรีเป็น/etc/initและไม่ใช่/etc/upstartเพราะ Upstart เป็นชื่อโครงการไบนารีที่ติดตั้งจริงยังคงเป็น/sbin/initดังนั้นจึงไม่เหมาะสมสำหรับการกำหนดค่าให้มีชื่อที่ไม่ตรงกับไบนารี


7
นี่เป็นสิ่งที่ผิดให้ดูเช่น udev's rules.d, Xorg's ค่อนข้างxorg.conf.dเก่า, ไม่แก่เกินไป/etc/profile.dฯลฯ
Ruslan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.