ทำความรู้จักกับ Linux: ไดเร็กทอรี /etc/init.d
- หมวดหมู่: ลินุกซ์
หากคุณใช้ Linux คุณมักจะเคยได้ยินชื่อไฟล์ init.d ไดเรกทอรี แต่ไดเรกทอรีนี้ทำอะไรกันแน่? ในที่สุดมันก็ทำสิ่งหนึ่ง แต่มันทำสิ่งหนึ่งสำหรับทั้งระบบของคุณดังนั้น init.d สำคัญมาก. init.d ไดเร็กทอรีมีสคริปต์ start / stop จำนวนหนึ่งสำหรับเซอร์วิสต่างๆบนระบบของคุณ ทุกอย่างจาก acpid ถึง x11 ทั่วไป ถูกควบคุมจากไดเร็กทอรีนี้ แน่นอนว่ามันไม่ง่ายอย่างนั้น
หากคุณดูที่ไฟล์ / etc ไดเรกทอรีคุณจะพบไดเรกทอรีที่อยู่ในรูปแบบ RC # .d (โดยที่ # คือตัวเลขแสดงระดับการเริ่มต้นเฉพาะ - จาก 0 ถึง 6) ภายในแต่ละไดเร็กทอรีเหล่านี้มีสคริปต์อื่น ๆ จำนวนหนึ่งที่ควบคุมกระบวนการ สคริปต์เหล่านี้จะขึ้นต้นด้วย 'K' หรือ 'S' สคริปต์ 'K' ทั้งหมดถูกเรียกใช้ก่อนสคริปต์ 'S' และขึ้นอยู่กับตำแหน่งของสคริปต์จะเป็นตัวกำหนดว่าสคริปต์เริ่มต้นเมื่อใด ระหว่างไดเร็กทอรีบริการระบบจะทำงานร่วมกันเหมือนเครื่องจักรที่มีน้ำมันอย่างดี แต่มีบางครั้งที่คุณต้องเริ่มหรือหยุดกระบวนการอย่างหมดจดและไม่ต้องใช้คำสั่ง kill หรือ killall นั่นคือจุดที่ /etc/init.d ไดเร็กทอรีมีประโยชน์
ตอนนี้หากคุณใช้การแจกจ่ายเช่น Fedora คุณอาจพบไดเรกทอรีนี้ใน /etc/rc.d/init.d . ไม่ว่าจะอยู่ที่ใดก็มีจุดมุ่งหมายเดียวกัน
เพื่อควบคุมสคริปต์ใด ๆ ใน init.d ด้วยตนเองคุณต้องมีการเข้าถึงรูท (หรือ sudo) แต่ละสคริปต์จะถูกเรียกใช้เป็นคำสั่งและโครงสร้างของคำสั่งจะมีลักษณะดังนี้:
/etc/init.d/command OPTION
ที่ไหน คำสั่ง คือคำสั่งจริงในการรันและ OPTION สามารถเป็นอย่างใดอย่างหนึ่งต่อไปนี้:
- เริ่มต้น
- หยุด
- โหลด
- เริ่มต้นใหม่
- แรงโหลด
ส่วนใหญ่คุณจะใช้อย่างใดอย่างหนึ่ง เริ่มหยุด, หรือ เริ่มต้นใหม่. ดังนั้นหากคุณต้องการหยุดเครือข่ายของคุณคุณสามารถออกคำสั่ง:
/etc/init.d/networking หยุด
หรือหากคุณทำการเปลี่ยนแปลงเครือข่ายของคุณและจำเป็นต้องรีสตาร์ทคุณสามารถทำได้โดยใช้คำสั่งต่อไปนี้:
/etc/init.d/networking เริ่มต้นใหม่
สคริปต์ init ทั่วไปบางส่วนในไดเร็กทอรีนี้ ได้แก่ :
- เครือข่าย
- แซมบ้า
- apache2
- ftpd
- sshd
- พิราบ
- MySQL
แน่นอนว่าอาจมีสคริปต์ที่ใช้บ่อยกว่าในไดเร็กทอรีของคุณซึ่งขึ้นอยู่กับสิ่งที่คุณติดตั้งไว้ รายการด้านบนนำมาจากการติดตั้ง Ubuntu Server 8.10 ดังนั้นการติดตั้งเดสก์ท็อปมาตรฐานจะมีสคริปต์ประเภทเครือข่ายน้อยกว่าเล็กน้อย
แต่สิ่งที่เกี่ยวกับ /etc/rc.local
มีตัวเลือกที่สามที่ฉันเคยใช้ไม่น้อย ตัวเลือกนี้คือไฟล์ /etc/rc.local ต้นฉบับ ไฟล์นี้ทำงานหลังจากที่สคริปต์ระดับเริ่มต้นอื่น ๆ ทั้งหมดทำงานดังนั้นจึงปลอดภัยที่จะใส่คำสั่งต่างๆที่คุณต้องการให้ออกเมื่อเริ่มต้น หลายครั้งฉันจะวางคำแนะนำในการติดตั้งสิ่งต่างๆเช่น nfs ไว้ในสคริปต์นี้ นี่เป็นจุดที่ดีในการวางสคริปต์ 'การแก้ไขปัญหา' ไว้ด้วยเช่นเมื่อฉันมีเครื่องที่ดูเหมือนว่าแซมบ้าจะไม่ต้องการเริ่มด้วยเหตุผลบางประการ แม้แต่การตรวจสอบการอ้างอิงเพื่อให้แน่ใจว่า Samba daemon ได้รับการตั้งค่าเพื่อเริ่มต้นเมื่อบูตเครื่อง ดังนั้นแทนที่จะใช้เวลาทั้งหมดกับสิ่งนี้ฉันเพียงแค่วางบรรทัด:
/etc/init.d/samba เริ่มต้น
ใน /etc/rc.local สคริปต์และแซมบ้าทำงานได้อย่างมีเสน่ห์ ในที่สุดฉันจะกลับมาและแก้ไขปัญหานี้
ความคิดสุดท้าย
Linux มีความยืดหยุ่น Linux มีความยืดหยุ่นมากจนแทบจะหลีกเลี่ยงไม่ได้หลายวิธีในการแก้ปัญหาเดียว การเริ่มต้นบริการระบบเป็นหนึ่งในปัญหาดังกล่าว ด้วยความช่วยเหลือของ /etc/init.d ระบบ (เช่นเดียวกับ /etc/rc.local ) คุณสามารถมั่นใจได้ว่าบริการของคุณจะเริ่มขึ้น