ค้นหาเว็บไซต์

LFCS: การจัดการกระบวนการและบริการการเริ่มต้นระบบ (SysViit, Systemd และ Upstart) - ตอนที่ 7


เมื่อสองเดือนก่อน Linux Foundation ได้ประกาศใบรับรอง LFCS (Linux Foundation Certified Sysadmin) ซึ่งเป็นโปรแกรมใหม่ที่น่าตื่นเต้นซึ่งมีจุดมุ่งหมายเพื่อให้บุคคลจากทั่วทุกมุมโลกสามารถ ได้รับการรับรองในการปฏิบัติงานการดูแลระบบขั้นพื้นฐานถึงระดับกลางบนระบบ Linux ซึ่งรวมถึงการสนับสนุนระบบและบริการที่ทำงานอยู่แล้ว ตลอดจนการค้นหาและวิเคราะห์ปัญหาโดยตรง รวมถึงความสามารถในการตัดสินใจว่าเมื่อใดควรแจ้งปัญหาแก่ทีมวิศวกร

วิดีโอต่อไปนี้อธิบายการแนะนำโดยย่อเกี่ยวกับโปรแกรมการรับรอง Linux Foundation

โพสต์นี้เป็นส่วนที่ 7 ของชุดบทช่วยสอน 10 ชุด ในส่วนนี้ เราจะอธิบายวิธีจัดการกระบวนการและบริการการเริ่มต้นระบบ Linux ที่จำเป็นสำหรับการสอบรับรอง LFCS

การจัดการกระบวนการเริ่มต้นระบบ Linux

กระบวนการบูตของระบบ Linux ประกอบด้วยหลายเฟส โดยแต่ละเฟสจะแสดงด้วยส่วนประกอบที่แตกต่างกัน แผนภาพต่อไปนี้สรุปกระบวนการบูตโดยย่อ และแสดงส่วนประกอบหลักทั้งหมดที่เกี่ยวข้อง

เมื่อคุณกดปุ่ม เปิด/ปิด บนเครื่องของคุณ เฟิร์มแวร์ที่จัดเก็บไว้ในชิป EEPROM ในเมนบอร์ดจะเริ่มต้น POST ( การทดสอบตัวเองในการเปิดเครื่อง) เพื่อตรวจสอบสถานะของทรัพยากรฮาร์ดแวร์ของระบบ เมื่อ POST เสร็จสิ้น เฟิร์มแวร์จะค้นหาและโหลดบูตโหลดเดอร์ ระยะที่ 1 ซึ่งอยู่ใน MBR หรือใน EFI พาร์ติชันของดิสก์แผ่นแรกที่มีอยู่ และให้การควบคุมมัน

วิธี MBR

MBR อยู่ในเซกเตอร์แรกของดิสก์ที่ทำเครื่องหมายว่าสามารถบูตได้ในการตั้งค่า BIOS และมีขนาด 512 ไบต์

  1. 446 ไบต์แรก: Bootloader มีทั้งโค้ดปฏิบัติการและข้อความแสดงข้อผิดพลาด
  2. 64 ไบต์ถัดไป: ตารางพาร์ติชันประกอบด้วยบันทึกสำหรับแต่ละพาร์ติชันจากสี่พาร์ติชัน (หลักหรือส่วนขยาย) เหนือสิ่งอื่นใด แต่ละบันทึกจะระบุสถานะ (ใช้งานอยู่/ไม่ใช้งาน) ขนาด และเซกเตอร์เริ่มต้น/สิ้นสุดของแต่ละพาร์ติชัน
  3. 2 ไบต์สุดท้าย: ตัวเลขมหัศจรรย์ทำหน้าที่เป็นการตรวจสอบความถูกต้องของ MBR

คำสั่งต่อไปนี้ทำการสำรองข้อมูล MBR (ในตัวอย่างนี้ /dev/sda คือฮาร์ดดิสก์ตัวแรก) ไฟล์ผลลัพธ์ mbr.bkp จะมีประโยชน์หากตารางพาร์ติชันเสียหาย เช่น ทำให้ระบบไม่สามารถบู๊ตได้

แน่นอนว่าเพื่อที่จะใช้ในภายหลังหากจำเป็น เราจะต้องบันทึกและเก็บไว้ที่อื่น (เช่น ไดรฟ์ USB เป็นต้น) ไฟล์นั้นจะช่วยให้เรากู้คืน MBR และจะทำให้เราไปต่อได้อีกครั้งหากเราไม่เปลี่ยนเค้าโครงฮาร์ดไดรฟ์ในระหว่างนี้

MBR สำรอง
dd if=/dev/sda of=mbr.bkp bs=512 count=1

กำลังกู้คืน MBR
dd if=mbr.bkp of=/dev/sda bs=512 count=1

วิธี EFI/UEFI

สำหรับระบบที่ใช้วิธี EFI/UEFI เฟิร์มแวร์ UEFI จะอ่านการตั้งค่าเพื่อกำหนดว่าแอปพลิเคชัน UEFI ใดที่จะเปิดตัวและจากที่ใด (เช่น ในดิสก์และพาร์ติชันใด มีพาร์ติชัน EFI)

ถัดไป บูตโหลดเดอร์ ระยะที่ 2 (หรือที่รู้จักในชื่อ Boot Manager) จะถูกโหลดและรัน GRUB [GRand Unified Boot] เป็นตัวจัดการการบูตที่ใช้บ่อยที่สุดใน Linux หนึ่งในสองเวอร์ชันที่แตกต่างกันสามารถพบได้ในระบบส่วนใหญ่ที่ใช้อยู่ในปัจจุบัน

  1. ไฟล์การกำหนดค่า GRUB ดั้งเดิม: /boot/grub/menu.lst (การแจกแจงแบบเก่า ไม่รองรับเฟิร์มแวร์ EFI/UEFI)
  2. ไฟล์การกำหนดค่า GRUB2: เป็นไปได้มากที่สุด /etc/default/grub

แม้ว่าวัตถุประสงค์ของการสอบ LFCS จะไม่ขอความรู้เกี่ยวกับระบบภายในของ GRUB อย่างชัดเจน แต่ถ้าคุณกล้าหาญและสามารถที่จะทำให้ระบบของคุณยุ่งเหยิงได้ (คุณอาจต้องการลองใช้ ก่อนอื่นบนเครื่องเสมือน ในกรณีนี้) คุณต้องเรียกใช้

update-grub

ในฐานะ root หลังจากแก้ไขการกำหนดค่าของ GRUB เพื่อใช้การเปลี่ยนแปลง

โดยพื้นฐานแล้ว GRUB จะโหลด เคอร์เนล เริ่มต้นและอิมเมจ initrd หรือ initramfs พูดง่ายๆ สั้นๆ ว่า initrd หรือ initramfs ช่วยในการตรวจจับฮาร์ดแวร์ การโหลดโมดูลเคอร์เนล และการค้นหาอุปกรณ์ที่จำเป็นในการติดตั้งระบบไฟล์รูทจริง

เมื่อระบบไฟล์รูทที่แท้จริงทำงานแล้ว เคอร์เนลจะดำเนินการระบบและตัวจัดการบริการ (init หรือ systemd ซึ่งมีการระบุกระบวนการหรือ PID อยู่ที่ 1 เสมอ) เพื่อเริ่มต้นผู้ใช้ปกติ กระบวนการบูตอวกาศเพื่อนำเสนอส่วนต่อประสานกับผู้ใช้

ทั้ง init และ systemd เป็น daemons (กระบวนการเบื้องหลัง) ที่จัดการ daemons อื่นๆ โดยเป็นบริการแรกที่เริ่มต้น (ระหว่างการบูต) และบริการสุดท้ายที่จะยุติ (ระหว่างการปิดระบบ)

การเริ่มบริการ (SysViit)

แนวคิดของ runlevels ใน Linux ระบุวิธีต่างๆ ในการใช้ระบบโดยการควบคุมบริการที่กำลังรันอยู่ กล่าวอีกนัยหนึ่ง ระดับรันจะควบคุมว่างานใดบ้างที่สามารถทำได้ในสถานะการดำเนินการปัจจุบัน=ระดับรัน (และงานใดที่ไม่สามารถทำได้)

ตามเนื้อผ้า กระบวนการเริ่มต้นนี้ดำเนินการตามแบบแผนที่มีต้นกำเนิดจาก System V UNIX โดยระบบจะส่งผ่านชุดคำสั่งของสคริปต์ที่เริ่มและหยุดบริการเมื่อเครื่องเข้าสู่ระดับการทำงานเฉพาะ (ซึ่งกล่าวอีกนัยหนึ่งคือ , เป็นโหมดที่แตกต่างของการรันระบบ)

ภายในแต่ละระดับการทำงาน สามารถตั้งค่าบริการแต่ละรายการให้ทำงานหรือปิดได้หากทำงานอยู่ เวอร์ชันล่าสุดของการแจกแจงหลักบางเวอร์ชันกำลังย้ายออกจากมาตรฐาน System V เพื่อหันไปใช้บริการและผู้จัดการระบบที่ค่อนข้างใหม่ที่เรียกว่า systemd (ซึ่งย่อมาจาก system daemon) แต่โดยปกติแล้ว สนับสนุนคำสั่ง sysv เพื่อวัตถุประสงค์ด้านความเข้ากันได้ ซึ่งหมายความว่าคุณสามารถเรียกใช้เครื่องมือเริ่มต้น sysv ที่รู้จักกันดีส่วนใหญ่ในการแจกจ่ายแบบ systemd

อ่านเพิ่มเติม: เหตุใด 'systemd' จึงแทนที่ 'init' ใน Linux

นอกจากการเริ่มต้นกระบวนการของระบบแล้ว init ยังดูที่ไฟล์ /etc/inittab เพื่อตัดสินใจว่าจะต้องป้อน runlevel ใด

Runlevel

คำอธิบาย

0

หยุดระบบ Runlevel 0 เป็นสถานะการเปลี่ยนผ่านพิเศษที่ใช้ในการปิดระบบอย่างรวดเร็ว

1

มีนามแฝงว่า s หรือ S บางครั้งระดับการทำงานนี้เรียกว่าโหมดการบำรุงรักษา บริการใด (ถ้ามี) ที่เริ่มต้นที่ระดับรันนี้จะแตกต่างกันไปตามการแจกจ่าย โดยทั่วไปจะใช้สำหรับการบำรุงรักษาระบบระดับต่ำที่อาจได้รับความเสียหายจากการทำงานของระบบปกติ

2

ผู้ใช้หลายคน บนระบบ Debian และอนุพันธ์ นี่คือระดับการทำงานเริ่มต้น และรวมการเข้าสู่ระบบแบบกราฟิก - ถ้ามี บนระบบที่ใช้ Red-Hat นี่คือโหมดผู้ใช้หลายคนที่ไม่มีเครือข่าย

3

บนระบบที่ใช้ Red-Hat นี่คือโหมดผู้ใช้หลายคนเริ่มต้น ซึ่งจะรันทุกอย่างยกเว้นสภาพแวดล้อมแบบกราฟิก ระดับรันและระดับ 4 และ 5 นี้มักจะไม่ได้ใช้บนระบบที่ใช้ Debian

4

โดยทั่วไปแล้วจะไม่ได้ใช้ตามค่าเริ่มต้น ดังนั้นจึงพร้อมสำหรับการปรับแต่ง

5

บนระบบที่ใช้ Red-Hat โหมดผู้ใช้หลายคนเต็มรูปแบบพร้อมการเข้าสู่ระบบ GUI ระดับรันนี้เหมือนกับระดับ 3 แต่มีการเข้าสู่ระบบ GUI

6

รีบูทระบบ

หากต้องการสลับระหว่างระดับการรัน เราสามารถทำการเปลี่ยนแปลงระดับการรันได้โดยใช้คำสั่ง init: init N (โดยที่ N เป็นหนึ่งในระดับการรันที่แสดงไว้ด้านบน) โปรดทราบว่านี่ไม่ใช่วิธีที่แนะนำในการนำระบบที่ทำงานอยู่ไปสู่ระดับการทำงานอื่น เนื่องจากไม่มีการเตือนผู้ใช้ที่เข้าสู่ระบบอยู่ (จึงทำให้พวกเขาสูญเสียงานและกระบวนการยุติอย่างผิดปกติ)

แต่ควรใช้คำสั่ง shutdown เพื่อรีสตาร์ทระบบ (ซึ่งจะส่งข้อความเตือนไปยังผู้ใช้ที่เข้าสู่ระบบทั้งหมดก่อน และบล็อกการเข้าสู่ระบบเพิ่มเติม จากนั้นจะส่งสัญญาณให้ init เปลี่ยนระดับการทำงาน) อย่างไรก็ตาม ระดับการทำงานเริ่มต้น (ระดับที่ระบบจะบูต) จะต้องได้รับการแก้ไขในไฟล์ /etc/inittab ก่อน

ด้วยเหตุผลดังกล่าว ให้ทำตามขั้นตอนเหล่านี้เพื่อสลับระหว่างระดับการรันอย่างถูกต้อง ในฐานะ root ให้มองหาบรรทัดต่อไปนี้ใน /etc/inittab

id:2:initdefault:

และเปลี่ยนตัวเลข 2 สำหรับระดับรันที่ต้องการด้วยโปรแกรมแก้ไขข้อความที่คุณต้องการ เช่น vim (อธิบายไว้ในวิธีใช้โปรแกรมแก้ไข vi/vim ใน Linux – ตอนที่ 2 ของซีรี่ส์นี้)

จากนั้นให้รันในฐานะรูท

shutdown -r now

คำสั่ง last นั้นจะรีสตาร์ทระบบ ทำให้ระบบเริ่มทำงานในระดับรันที่ระบุระหว่างการบู๊ตครั้งถัดไป และจะรันสคริปต์ที่อยู่ใน /etc/rc[runlevel].d ไดเร็กทอรีเพื่อตัดสินใจว่าบริการใดควรเริ่มต้นและไม่ควรเริ่มบริการใด ตัวอย่างเช่น สำหรับ runlevel 2 ในระบบต่อไปนี้

จัดการบริการโดยใช้ chkconfig

หากต้องการเปิดหรือปิดบริการของระบบขณะบูต เราจะใช้คำสั่ง chkconfig ใน CentOS/openSUSE และ sysv-rc-conf ใน Debian และอนุพันธ์ เครื่องมือนี้ยังสามารถแสดงให้เราเห็นว่าสถานะบริการที่กำหนดไว้ล่วงหน้าสำหรับระดับการทำงานเฉพาะคืออะไร

อ่านเพิ่มเติม: วิธีหยุดและปิดใช้งานบริการที่ไม่ต้องการใน Linux

แสดงรายการการกำหนดค่าระดับรันสำหรับบริการ

chkconfig --list [service name]
chkconfig --list postfix
chkconfig --list mysqld

ในภาพด้านบน เราจะเห็นว่า postfix ถูกตั้งค่าให้เริ่มต้นเมื่อระบบเข้าสู่ runlevels 2 ถึง 5 ในขณะที่ mysqld b> จะทำงานตามค่าเริ่มต้นสำหรับระดับการทำงาน 2 ถึง 4 ตอนนี้ สมมติว่านี่ไม่ใช่พฤติกรรมที่คาดหวัง

ตัวอย่างเช่น เราจำเป็นต้องเปิด mysqld สำหรับ runlevel 5 ด้วยเช่นกัน และปิด postfix สำหรับ runlevels 4 และ 5 นี่คือสิ่งที่เราจะทำในแต่ละกรณี (เรียกใช้ ทำตามคำสั่งในฐานะ root)

การเปิดใช้บริการสำหรับระดับการทำงานเฉพาะ
chkconfig --level [level(s)] service on
chkconfig --level 5 mysqld on
ปิดการใช้งานบริการสำหรับระดับการทำงานเฉพาะ
chkconfig --level [level(s)] service off
chkconfig --level 45 postfix off

ตอนนี้เราจะทำงานที่คล้ายกันในระบบ ที่ใช้ Debian โดยใช้ sysv-rc-conf

จัดการบริการโดยใช้ sysv-rc-conf

การกำหนดค่าบริการให้เริ่มต้นโดยอัตโนมัติในระดับการทำงานเฉพาะ และป้องกันไม่ให้เริ่มต้นในระดับอื่นทั้งหมด

1. ลองใช้คำสั่งต่อไปนี้เพื่อดูว่าระดับการทำงานที่ mdadm ได้รับการกำหนดค่าให้เริ่มต้นคืออะไร

ls -l /etc/rc[0-6].d | grep -E 'rc[0-6]|mdadm'

2. เราจะใช้ sysv-rc-conf เพื่อป้องกันไม่ให้ mdadm เริ่มทำงานในทุกระดับการทำงาน ยกเว้น 2 เพียงทำเครื่องหมายหรือยกเลิกการทำเครื่องหมาย (ด้วยแป้นเว้นวรรค) ตามต้องการ (คุณสามารถเลื่อนขึ้น ลง ซ้ายและขวาด้วยปุ่มลูกศร)

sysv-rc-conf

จากนั้นกด q เพื่อออก

3. เราจะรีสตาร์ทระบบและรันคำสั่งจาก ขั้นตอนที่ 1 อีกครั้ง

ls -l /etc/rc[0-6].d | grep -E 'rc[0-6]|mdadm'

ในภาพด้านบน เราจะเห็นว่า mdadm ได้รับการกำหนดค่าให้เริ่มต้นเฉพาะบน runlevel 2

แล้ว systemd ล่ะ?

systemd เป็นอีกหนึ่งบริการและผู้จัดการระบบที่ Linux รายใหญ่หลายรุ่นนำมาใช้ มีจุดมุ่งหมายเพื่อให้การประมวลผลเพิ่มเติมสามารถดำเนินการแบบขนานได้ในระหว่างการเริ่มต้นระบบ (ต่างจาก sysvinit ซึ่งมีแนวโน้มที่จะช้ากว่าเสมอเนื่องจากเริ่มกระบวนการทีละรายการ ตรวจสอบว่ารายการหนึ่งขึ้นอยู่กับอีกรายการหนึ่งหรือไม่ และรอ daemons เพื่อเปิดใช้งานเพื่อให้สามารถเริ่มบริการได้มากขึ้น) และเพื่อทำหน้าที่เป็นการจัดการทรัพยากรแบบไดนามิกให้กับระบบที่ทำงานอยู่

ดังนั้น บริการต่างๆ จะเริ่มทำงานเมื่อจำเป็น (เพื่อหลีกเลี่ยงการใช้ทรัพยากรระบบ) แทนที่จะเปิดใช้งานโดยไม่มีเหตุผลที่ชัดเจนระหว่างการบูต

การดูสถานะของกระบวนการทั้งหมดที่ทำงานบนระบบของคุณ ทั้งบริการ systemd แบบเนทีฟและ SysV ให้รันคำสั่งต่อไปนี้

systemctl

คอลัมน์ LOAD แสดงว่าคำจำกัดความของหน่วย (อ้างอิงถึงคอลัมน์ UNIT ซึ่งแสดงบริการหรือสิ่งใดก็ตามที่ดูแลโดย systemd) ได้รับการโหลดอย่างถูกต้องหรือไม่ ในขณะที่ ACTIVE< คอลัมน์ และ SUB แสดงสถานะปัจจุบันของหน่วยดังกล่าว

การแสดงข้อมูลเกี่ยวกับสถานะปัจจุบันของบริการ

เมื่อคอลัมน์ ใช้งานอยู่ ระบุว่าสถานะของหน่วยเป็นอย่างอื่นนอกเหนือจากใช้งานอยู่ เราสามารถตรวจสอบสิ่งที่เกิดขึ้นได้โดยใช้

systemctl status [unit]

ตัวอย่างเช่น ในภาพด้านบน media-samba.mount อยู่ในสถานะล้มเหลว มาวิ่งกันเถอะ

systemctl status media-samba.mount

เราจะเห็นว่า media-samba.mount ล้มเหลวเนื่องจากกระบวนการเมานต์บนโฮสต์ dev1 ไม่พบการแชร์เครือข่ายที่ //192.168.0.10/gacanepa< /ข>.

การเริ่มหรือการหยุดบริการ

เมื่อการแชร์เครือข่าย //192.168.0.10/gacanepa ใช้งานได้ ให้ลองเริ่มต้น จากนั้นหยุด และสุดท้ายรีสตาร์ทหน่วย media-samba.mount หลังจากดำเนินการแต่ละอย่างแล้ว ให้เรียกใช้ systemctl status media-samba.mount เพื่อตรวจสอบสถานะ

systemctl start media-samba.mount
systemctl status media-samba.mount
systemctl stop media-samba.mount
systemctl restart media-samba.mount
systemctl status media-samba.mount

การเปิดใช้งานหรือปิดใช้งานบริการเพื่อเริ่มต้นระหว่างการบู๊ต

ภายใต้ systemd คุณสามารถเปิดหรือปิดใช้งานบริการเมื่อบูทได้

systemctl enable [service] 		# enable a service 
systemctl disable [service] 		# prevent a service from starting at boot

กระบวนการเปิดใช้งานหรือปิดใช้งานบริการเพื่อเริ่มโดยอัตโนมัติเมื่อบูตประกอบด้วยการเพิ่มหรือลบลิงก์สัญลักษณ์ในไดเร็กทอรี /etc/systemd/system/multi-user.target.wants

หรือคุณสามารถค้นหาสถานะปัจจุบันของบริการ (เปิดใช้งานหรือปิดใช้งาน) ด้วยคำสั่ง

systemctl is-enabled [service]

ตัวอย่างเช่น,

systemctl is-enabled postfix.service

นอกจากนี้คุณสามารถรีบูทหรือปิดระบบได้ด้วย

systemctl reboot
systemctl shutdown

พุ่งพรวด

Upstart คือการแทนที่ตามเหตุการณ์สำหรับ /sbin/init daemon และเกิดจากความต้องการในการเริ่มบริการเฉพาะเมื่อจำเป็นเท่านั้น (รวมถึงการดูแลในขณะที่ให้บริการด้วย กำลังทำงานอยู่) และการจัดการเหตุการณ์ที่เกิดขึ้น ซึ่งเหนือกว่าระบบ sysvinit ที่อิงการพึ่งพาแบบคลาสสิก

เดิมได้รับการพัฒนาสำหรับการแจกจ่าย Ubuntu แต่ใช้ใน Red Hat Enterprise Linux 6.0 แม้ว่าจะมีจุดมุ่งหมายให้เหมาะสำหรับการปรับใช้ใน Linux ทุกรุ่นเพื่อทดแทน sysvinit แต่ในเวลาต่อมาก็ถูกบดบังด้วย systemd เมื่อวันที่ 14 กุมภาพันธ์ พ.ศ. 2557 Mark Shuttleworth (ผู้ก่อตั้ง Canonical Ltd.) ประกาศว่า Ubuntu ในอนาคตจะใช้ systemd เป็นค่าเริ่มต้น init daemon

เนื่องจากสคริปต์เริ่มต้น SysV สำหรับระบบมีการใช้งานร่วมกันมาเป็นเวลานาน แพคเกจซอฟต์แวร์จำนวนมากจึงรวมสคริปต์เริ่มต้นระบบ SysV ไว้ด้วย เพื่อรองรับแพ็คเกจดังกล่าว Upstart จึงมีโหมดความเข้ากันได้: โดยจะรันสคริปต์เริ่มต้น SysV ในตำแหน่งปกติ (/etc/rc.d/rc?.d, /etc/init.d/ rc?.d, /etc/rc?.d หรือตำแหน่งที่คล้ายกัน) ดังนั้นหากเราติดตั้งแพ็คเกจที่ยังไม่มีสคริปต์การกำหนดค่า Upstart ก็ควรเปิดใช้งานตามปกติ

นอกจากนี้ หากเราได้ติดตั้งยูทิลิตี้ เช่น chkconfig คุณควรจะสามารถใช้ยูทิลิตี้เหล่านี้เพื่อจัดการบริการที่ใช้ SysV ของคุณได้เหมือนกับที่เราทำบนระบบที่ใช้ sysvinit

สคริปต์พุ่งพรวดยังรองรับการเริ่มหรือการหยุดบริการตามการดำเนินการที่หลากหลายมากกว่าสคริปต์เริ่มต้นระบบ SysV ตัวอย่างเช่น Upstart สามารถเปิดบริการเมื่อใดก็ตามที่มีการเชื่อมต่ออุปกรณ์ฮาร์ดแวร์เฉพาะ

ระบบที่ใช้ Upstart และสคริปต์ดั้งเดิมจะแทนที่ไฟล์ /etc/inittab และไดเร็กทอรีสคริปต์เริ่มต้น SysV เฉพาะระดับรันด้วย .conf สคริปต์ในไดเร็กทอรี /etc/init

โดยทั่วไปสคริปต์ *.conf (หรือที่เรียกว่าคำจำกัดความของงาน) จะประกอบด้วยสิ่งต่อไปนี้:

    1. คำอธิบายของกระบวนการ
    2. ระดับการรันที่กระบวนการควรรันหรือเหตุการณ์ที่ควรทริกเกอร์
    3. Runlevels ที่กระบวนการควรหยุดหรือเหตุการณ์ที่ควรหยุด
    4. ตัวเลือก.
    5. คำสั่งให้เริ่มกระบวนการ

ตัวอย่างเช่น,

My test service - Upstart script demo description "Here goes the description of 'My test service'" author "Dave Null <[email >"
Stanzas

#
Stanzas define when and how a process is started and stopped
See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
When to start the service
start on runlevel [2345]
When to stop the service
stop on runlevel [016]
Automatically restart process in case of crash
respawn
Specify working directory
chdir /home/dave/myfiles
Specify the process/command (add arguments if needed) to run
exec bash backup.sh arg1 arg2

หากต้องการใช้การเปลี่ยนแปลง คุณจะต้องแจ้งให้ upstart โหลดการกำหนดค่าใหม่

initctl reload-configuration

จากนั้นเริ่มงานของคุณโดยพิมพ์คำสั่งต่อไปนี้

sudo start yourjobname

โดยที่ yourjobname คือชื่อของงานที่เพิ่มไว้ก่อนหน้านี้ด้วยสคริปต์ yourjobname.conf

คู่มืออ้างอิงที่สมบูรณ์และละเอียดยิ่งขึ้นสำหรับ Upstart มีอยู่ในเว็บไซต์ของโครงการภายใต้เมนู "ตำราอาหาร"

สรุป

ความรู้เกี่ยวกับกระบวนการบูต Linux เป็นสิ่งจำเป็นเพื่อช่วยคุณในการแก้ไขปัญหาตลอดจนการปรับประสิทธิภาพของคอมพิวเตอร์และบริการที่ทำงานอยู่ตามความต้องการของคุณ

ในบทความนี้ เราได้วิเคราะห์สิ่งที่เกิดขึ้นตั้งแต่วินาทีที่คุณกดสวิตช์ เปิด/ปิด เพื่อเปิดเครื่องจนกว่าคุณจะได้รับอินเทอร์เฟซผู้ใช้ที่ทำงานได้อย่างสมบูรณ์ ฉันหวังว่าคุณจะได้เรียนรู้การอ่านมันมากเท่ากับที่ฉันได้รวบรวมไว้ อย่าลังเลที่จะแสดงความคิดเห็นหรือคำถามของคุณด้านล่าง เราหวังเป็นอย่างยิ่งว่าจะได้รับการติดต่อจากผู้อ่านของเรา!