ความแตกต่างระหว่าง/etc/init/
และ/etc/init.d/
คืออะไร?
โดยทั่วไปแล้ว.d
คำต่อท้ายถ่ายทอดความหมายอะไรกับไดเรกทอรี
ความแตกต่างระหว่าง/etc/init/
และ/etc/init.d/
คืออะไร?
โดยทั่วไปแล้ว.d
คำต่อท้ายถ่ายทอดความหมายอะไรกับไดเรกทอรี
คำตอบ:
/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
upstart
sysvinit
และในเวอร์ชันล่าสุดอาจsystemd
เป็นเช่นนั้น (ซึ่งไม่มีอยู่สำหรับ Ubuntu ย้อนกลับไปเมื่อฉันเขียนคำตอบของฉัน) มันเป็นแพคเกจแล้วแต่จำนวนใดให้/sbin/init
( dpkg -S /sbin/init
)
upstart
แพ็คเกจที่ให้ / sbin / init (วิ่งdpkg -S /sbin/init
) แต่ Bitnami ได้วางสคริปต์ไว้ในไดเรกทอรี /etc/init.d สิ่งนี้ขัดแย้งกับคำตอบของคุณที่ @AsheeshR ข้างต้นหรือไม่ ขอขอบคุณ.
".d" มักจะผนวกเข้ากับชื่อไดเรกทอรีเพื่อระบุว่าสิ่งที่เคยเป็น (หรือสิ่งที่อาจได้รับ) จัดการโดยสคริปต์เดียวหรือไฟล์การกำหนดค่าเดียวถูกแบ่งออกเป็นหลายไฟล์เพื่อความสะดวก แต่ที่ ควรรวมหรือดำเนินการพร้อมกัน
ตัวอย่างเช่น/etc/apache/conf.d/
หรือ/etc/apt/sources.d/
ในกรณีที่เป็นสิ่งสำคัญที่ควรรวมหรือดำเนินการตามลำดับไฟล์ในไดเรกทอรีเหล่านี้บางครั้งเริ่มต้นด้วยตัวเลขเช่น "00- ค่าเริ่มต้น" หรือ "80 ผู้ใช้" เพื่อให้สามารถดำเนินการตามลำดับที่ถูกต้อง
ในกรณีที่/etc/init.d/
มันเรียงลำดับของบ่งชี้ว่าสคริปต์ใน "init.d" ควรถูกดำเนินการทั้งหมด อย่างไรก็ตามในปัจจุบันระบบเริ่มต้นของระบบปฏิบัติการที่ทันสมัยมีความเกี่ยวข้องมากกว่านั้นเล็กน้อย แต่ชื่อไดเรกทอรียังคงอยู่ที่นั่น
เมื่อคุณชี้ให้เห็นระบบการตั้งชื่อ ".d" นั้นทำให้งงงวยและแปลกและไม่มีสถานที่ใดในระบบที่ทันสมัยใด ๆ เลย - คุณจะสังเกตได้ว่าบริการที่ทันสมัยส่วนใหญ่มักจะวางไว้
เหตุผลที่ไดเรกทอรีเป็น/etc/init
และไม่ใช่/etc/upstart
เพราะ Upstart เป็นชื่อโครงการไบนารีที่ติดตั้งจริงยังคงเป็น/sbin/init
ดังนั้นจึงไม่เหมาะสมสำหรับการกำหนดค่าให้มีชื่อที่ไม่ตรงกับไบนารี
rules.d
, Xorg's ค่อนข้างxorg.conf.d
เก่า, ไม่แก่เกินไป/etc/profile.d
ฯลฯ
.d
ไดเรกทอรีที่ป้อนด้วย System V มันเป็นสัญกรณ์ที่ทำให้งงและในที่สุดก็อาจเป็นความคิดของคน ๆ หนึ่งที่เข้าสู่ codebase และไม่สามารถออกไปได้ ตัวอย่างเช่นหากคุณคิดว่าcat
เป็นชื่อที่ไม่ดีสำหรับงานนั้นลองนึกภาพว่ามีไฟล์กี่ไฟล์ในระบบที่คุณต้องแตะเพื่อเปลี่ยน