วิธีใช้คำสั่ง 'init' ใน Linux
ในนั้น เป็นผู้ปกครองของทั้งหมด กระบวนการลินุกซ์. เป็นกระบวนการแรกที่เริ่มทำงานเมื่อคอมพิวเตอร์เริ่มทำงานและทำงานจนกว่าระบบจะปิดลง เป็นบรรพบุรุษของกระบวนการอื่นๆ ทั้งหมด
บทบาทหลักคือการสร้างกระบวนการจากสคริปต์ที่จัดเก็บไว้ในไฟล์ /etc/inittab. ไฟล์นี้มักจะเก็บรายการที่ทำให้เกิด ในนั้น วางไข่ เก็ตตี้ส ในแต่ละบรรทัด ซึ่งผู้ใช้ระบบสามารถเข้าสู่ระบบได้ นอกจากนี้ยังควบคุมกระบวนการที่เป็นอิสระซึ่งจำเป็นสำหรับระบบใดระบบหนึ่งโดยเฉพาะ

Runlevels
NS runlevel คือการกำหนดค่าซอฟต์แวร์ของระบบที่อนุญาตให้ดำเนินการเฉพาะกลุ่มของกระบวนการที่เลือกเท่านั้น กระบวนการที่เกิดจาก ในนั้น สำหรับแต่ละระดับการทำงานเหล่านี้ถูกกำหนดไว้ในไฟล์ /etc/inittab ในนั้น รองรับแปดระดับการทำงาน: 0 ผ่าน 6 และ NS หรือ NS. ระดับการรันจะเปลี่ยนไปเมื่อผู้ใช้ที่มีสิทธิ์ใช้งาน Telinitซึ่งส่งสัญญาณที่เหมาะสมไปยัง ในนั้นบอกมันว่าจะเปลี่ยนเป็น runlevel ไหน
Runlevels 0, 1 และ 6 ถูกสงวนไว้ Runlevel 0 หยุดระบบ runlevel 6 รีบูต ระบบและรันระดับ 1 บังคับให้ระบบเข้าสู่โหมดผู้ใช้คนเดียว Runlevel S ไม่ได้มีไว้สำหรับใช้โดยตรง แต่ใช้สคริปต์ที่ดำเนินการเมื่อ runlevel 1 เริ่มทำงานแทน
Runlevels 7 ถึง 9 นั้นใช้ได้แต่ไม่ได้รับการบันทึกอย่างดีเพราะ Unix ธรรมดา ตัวแปรไม่ได้ใช้พวกเขา Runlevels S และ s เหมือนกัน
กำลังบูต
หลังจาก ในนั้น ดำเนินการเป็นขั้นตอนสุดท้ายของ เคอร์เนล ลำดับการบูต มันจะค้นหาไฟล์ /etc/inittab เพื่อดูว่ามีรายการของ type. หรือไม่ initdefault. รายการ initdefault กำหนดระดับการทำงานเริ่มต้นของระบบ หากไม่มีรายการดังกล่าว (หรือไม่มี /etc/inittab เลย) จะต้องป้อน runlevel ที่ คอนโซลระบบ.
Runlevel S หรือ s นำระบบไปยังโหมดผู้ใช้คนเดียวและไม่ต้องการไฟล์ /etc/inittab ในโหมดผู้ใช้คนเดียว รูทเชลล์เปิดบน /dev/console
เมื่อเข้าสู่โหมดผู้ใช้คนเดียว ในนั้น อ่านคอนโซลของ ioctl สถานะจาก /etc/ioctl.save หากไม่มีไฟล์นี้ ในนั้น เริ่มต้นบรรทัดที่ 9600 บอดและด้วยการตั้งค่า CLOCAL เมื่อไหร่ ในนั้น ออกจากโหมดผู้ใช้คนเดียว โดยจะเก็บการตั้งค่า ioctl ของคอนโซลไว้ในไฟล์นี้ เพื่อให้สามารถใช้ซ้ำได้สำหรับเซสชันผู้ใช้คนเดียวครั้งถัดไป
เมื่อเข้าสู่โหมดผู้ใช้หลายคนเป็นครั้งแรก ในนั้น ดำเนินการรายการบูตและ bootwait เพื่อให้ระบบไฟล์สามารถเมานต์ก่อนที่ผู้ใช้จะเข้าสู่ระบบ จากนั้น รายการทั้งหมดที่ตรงกับกระบวนการระดับการทำงาน
เมื่อเริ่มกระบวนการใหม่ ในนั้น ก่อนอื่นให้ตรวจสอบว่าไฟล์ /etc/initscript มีอยู่หรือไม่ หากเป็นเช่นนั้น จะใช้สคริปต์นี้เพื่อเริ่มกระบวนการ
ทุกครั้งที่ลูกเลิกเรียน ในนั้น บันทึกข้อเท็จจริงและสาเหตุที่มันตายใน /var/run/utmp และ/var/log/wtmp หากมีไฟล์เหล่านี้อยู่
การเปลี่ยนระดับการวิ่ง

หลังจากที่มันวางไข่กระบวนการทั้งหมดที่ระบุ ในนั้น รอให้กระบวนการลูกหลานตาย สัญญาณ powerfail หรือจนกว่า Telinit จะส่งสัญญาณเพื่อเปลี่ยนระดับการรันของระบบ เมื่อหนึ่งในสามเงื่อนไขเหล่านี้เกิดขึ้น มันจะตรวจสอบไฟล์ /etc/inittab อีกครั้ง สามารถเพิ่มรายการใหม่ลงในไฟล์นี้ได้ตลอดเวลา อย่างไรก็ตาม, ในนั้น ยังคงรอให้หนึ่งในสามเงื่อนไขข้างต้นเกิดขึ้น เพื่อให้มีการตอบสนองในทันที Telinit Q คำสั่งตื่นขึ้น ในนั้น เพื่อตรวจสอบไฟล์ /etc/inittab อีกครั้ง
ถ้า ในนั้น ไม่ได้อยู่ในโหมดผู้ใช้คนเดียวและได้รับ powerfail สัญญาณมันอ่านไฟล์ /etc/powerstatus. จากนั้นจะเริ่ม a สั่งการ ตามเนื้อหาของไฟล์นี้:
- NS(AIL): ไฟดับ UPS กำลังจ่ายไฟ ดำเนินการ powerwait และ powerfail รายการ.
- อู๋(K): พลังได้รับการฟื้นฟูแล้ว ให้ดำเนินการ powerokwait รายการ.
- หลี่(โอ๊ย): ไฟดับ และ UPS มีแบตเตอรี่เหลือน้อย ดำเนินการ powerfailnow รายการ.
หากไม่มี /etc/powerstatus หรือมีอย่างอื่นนอกเหนือจากตัวอักษร F, O หรือ L ในนั้น ทำตัวราวกับว่ามันอ่านตัวอักษร F.
ไม่แนะนำให้ใช้ SIGPWR และ /etc/powerstatus ใช้ช่องควบคุม /dev/initctl ใน modern ลินุกซ์ ดิสทริบิวชั่น.
เมื่อไหร่ ในนั้น ถูกร้องขอให้เปลี่ยนระดับการรัน โดยจะส่งสัญญาณเตือน SIGTERM ไปยังกระบวนการทั้งหมดที่ไม่ได้กำหนดไว้ในระดับการทำงานใหม่ จากนั้นรอห้าวินาทีก่อนที่จะบังคับยุติกระบวนการเหล่านี้โดยใช้สัญญาณ SIGKILL ในนั้น ถือว่ากระบวนการทั้งหมดเหล่านี้และลูกหลานของพวกเขายังคงอยู่ในกลุ่มกระบวนการเดียวกันกับที่ ในนั้น เดิมสร้างขึ้นสำหรับพวกเขา หากกระบวนการใดเปลี่ยนความเกี่ยวข้องของกลุ่มกระบวนการ กระบวนการจะไม่รับสัญญาณเหล่านี้ กระบวนการดังกล่าวจะต้องยุติแยกกัน
Telinit
Telinit เชื่อมโยงกับ /sbin/init ใช้อาร์กิวเมนต์หนึ่งอักขระและสัญญาณ ในนั้น เพื่อดำเนินการตามความเหมาะสม อาร์กิวเมนต์ต่อไปนี้เป็นคำสั่งของ Telinit:
- 0, 1, 2, 3, 4, 5 หรือ 6: สลับไปที่ระดับการวิ่งที่ระบุ
- ก, ข, ค: ประมวลผลเฉพาะรายการไฟล์ /etc/inittab ที่มี runlevel a, b หรือ c
- NS หรือ NS: ตรวจสอบไฟล์ /etc/inittab อีกครั้ง
- NS หรือ NS: เปลี่ยนเป็นโหมดผู้ใช้คนเดียว บางครั้งเรียกว่าโหมดผู้ใช้คนเดียว โหมดการกู้คืน เพราะมักใช้ในการซ่อมแซมระบบฉุกเฉิน
- ยู หรือ ยู: ดำเนินการอีกครั้ง (รักษาสถานะไว้) ไม่มีการตรวจสอบไฟล์ /etc/inittab อีกครั้ง Runlevel ควรเป็น S, s, 1, 2, 3, 4 หรือ 5; มิฉะนั้น คำขอจะถูกละเว้นอย่างเงียบ ๆ
Telinit ยังบอกได้ ในนั้น นานแค่ไหนที่ควรรอระหว่างการส่งกระบวนการ สัญญาณ SIGTERM และ SIGKILL. ค่าเริ่มต้นคือห้าวินาที แต่ค่านี้สามารถเปลี่ยนได้ด้วย -NS วินาที ตัวเลือก.
Telinit สามารถเรียกใช้โดยผู้ใช้ที่มีสิทธิ์ที่เหมาะสมเท่านั้น
NS ในนั้น ไบนารีตรวจสอบว่าเป็น ในนั้น หรือ Telinit โดยดูที่ ID กระบวนการ ความจริง ในนั้นID กระบวนการของจะเป็น 1 เสมอ จากนี้ไปแทนการเรียก Telinit,คนก็ใช้ได้ ในนั้น เป็นทางลัด