ทำความรู้จักกับ 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 ) คุณสามารถมั่นใจได้ว่าบริการของคุณจะเริ่มขึ้น