เผยแพร่เมื่อ 19 เมษายน 2026, 10:00 น. EDT
ประสบการณ์ของ Afam ในการเผยแพร่เทคโนโลยีย้อนกลับไปในปี 2018 เมื่อเขาทำงานให้กับ Make Tech Easier ในช่วงหลายปีที่ผ่านมา เขาได้สร้างชื่อเสียงจากการเผยแพร่คำแนะนำ บทวิจารณ์ เคล็ดลับ และบทความอธิบายคุณภาพสูง ครอบคลุมถึง Windows, Linux และเครื่องมือโอเพ่นซอร์ส ผลงานของเขาได้รับการนำเสนอบนเว็บไซต์ชั้นนำ รวมถึง Technical Ustad, Windows Report, Guiding Tech, Alphr และ Next of Windows
เขาสำเร็จการศึกษาระดับปริญญาตรีสาขาวิทยาการคอมพิวเตอร์และเป็นผู้สนับสนุนอย่างแข็งขันในด้านความเป็นส่วนตัวและความปลอดภัยของข้อมูล พร้อมด้วยเคล็ดลับ วิดีโอ และบทช่วยสอนมากมายเกี่ยวกับหัวข้อที่เผยแพร่บนช่อง YouTube ของ Fuzo Tech
เมื่อเขาไม่ได้ทำงาน เขาชอบที่จะใช้เวลาอยู่กับครอบครัว ปั่นจักรยาน หรือดูแลสวน ป>
ฉันชอบใช้ Linux เพื่อความเสถียร อย่างไรก็ตาม โฮมเซิร์ฟเวอร์ของฉันซึ่งทำงานตลอด 24 ชั่วโมงทุกวัน ดูเหมือนว่าจะขยายขีดจำกัดและฉันพบว่ามันค้างในช่วงเวลาที่เลวร้ายที่สุด ในบางครั้ง ฉันต้องเข้าไปรีบูตด้วยตนเองเพื่อให้กล่องรีโมตของฉันกลับมาออนไลน์อีกครั้ง
หากเป็นสถานการณ์ที่คุณเผชิญ Linux มีระบบในตัวที่สมบูรณ์แบบสำหรับสถานการณ์ประเภทนี้ เมื่อรวมเข้ากับการกู้คืนบริการของ systemd ทำให้ฉันมีกลไกการกู้คืนข้อขัดข้องแบบสองชั้นที่มีประสิทธิภาพซึ่งไม่ต้องการการแทรกแซงทางกายภาพ
ที่เกี่ยวข้อง
Linux มีกลไกการกู้คืนในตัวอยู่แล้ว
ตัวจับเวลาจ้องจับผิดที่ปกป้องระบบของคุณ
Linux มีฟีเจอร์ในตัวที่เรียกว่า watchdog ซึ่งทำงานบนหลักการที่ว่าระบบจะส่งสัญญาณเป็นประจำเพื่อแสดงว่าระบบยังคงทำงานอยู่ ในขณะที่ไม่ได้รับสัญญาณจากระบบ โปรแกรมเฝ้าระวังจะถือว่ามีปัญหาและทำให้เกิดการรีบูต คุณลักษณะนี้มีมาตั้งแต่กลางทศวรรษ 1990 บน Linux และถูกใช้เป็นหลักบนระบบที่สถานะการออนไลน์ไม่สามารถต่อรองได้ เช่น เซิร์ฟเวอร์และระบบฝังตัว
ในบางระบบ โปรแกรมเฝ้าระวังจะถูกเปิดเผยผ่าน /dev/watchdog ไฟล์อุปกรณ์ ในขณะที่ไฟล์อื่นๆ อาจเป็น /dev/watchdog0 . กระบวนการต้องเขียนลงในไฟล์นี้เพื่อรีเซ็ตตัวจับเวลานับถอยหลัง หากกระบวนการหยุดเขียน โดยทั่วไปหมายความว่าระบบถูกหยุดทำงานหรือทรัพยากรถูกใช้โดยกระบวนการที่ไม่สามารถควบคุมได้ ในกรณีเช่นนี้ ตัวจับเวลาจะหมดอายุ และนั่นคือวิธีการเริ่มต้นการรีบูต
สุนัขเฝ้าบ้านมีสองประเภท:ฮาร์ดแวร์และซอฟต์แวร์ (ซอฟต์ด็อก) อย่างแรกอาจเป็นกลไกของฮาร์ดแวร์บนเมนบอร์ด สามารถรีเซ็ตระบบได้ตลอดเวลา แม้ว่าเคอร์เนลจะถูกล็อคไว้โดยสมบูรณ์ก็ตาม ต่อไปคือเวอร์ชันซอฟต์แวร์ที่ทำงานภายในเคอร์เนลและไม่ต้องการฮาร์ดแวร์เพิ่มเติมใดๆ อย่างไรก็ตาม เวอร์ชันนี้จะไม่ช่วยคุณหากเคอร์เนลขัดข้อง
<หัว>พิมพ์
ต้องการฮาร์ดแวร์เฉพาะ
รอดพ้นจากความผิดพลาดของเคอร์เนลอย่างหนัก
เหมาะที่สุดสำหรับ
หน่วยงานเฝ้าระวังด้านฮาร์ดแวร์
ใช่
ใช่
เซิร์ฟเวอร์ ระบบสำคัญที่ทำงานตลอดเวลา
ซอฟต์แวร์ (ซอฟต์ด็อก)
ไม่
ไม่
โฮมเซิร์ฟเวอร์, VM, แท่นขุดเจาะอเนกประสงค์
โปรแกรมเฝ้าระวังซอฟต์แวร์เหมาะอย่างยิ่งสำหรับการค้างทั่วไปที่การตั้งค่าส่วนใหญ่ต้องเผชิญ เช่น โหลดที่เพิ่มขึ้นอย่างรวดเร็ว หน่วยความจำไม่เพียงพอ และกระบวนการที่ควบคุมไม่ได้ อย่างไรก็ตาม คุณลักษณะนี้จะถูกปิดใช้งานตามค่าเริ่มต้น และการกำหนดค่าที่ไม่ถูกต้องอาจทำให้ระบบรีบูตโดยไม่จำเป็นและซ้ำหลายครั้ง ถึงกระนั้นมันก็กลายเป็นหนึ่งในฟีเจอร์ Linux ที่ซ่อนอยู่ที่ฉันชื่นชอบ
การตั้งค่าการกู้คืนข้อขัดข้องอัตโนมัติในไม่กี่นาที
การตั้งค่าเฝ้าระวังที่ใช้งานได้จริงซึ่งใช้งานได้จริง
softdog ใช้งานได้กับ Linux distros เกือบทั้งหมดแล้ว ดังนั้นคุณไม่จำเป็นต้องใช้ฮาร์ดแวร์ใหม่ จุดเริ่มต้นของคุณคือการโหลดโมดูลด้วยคำสั่งนี้:
sudo modprobe softdog
เพื่อให้แน่ใจว่าซอฟต์ด็อกยังคงอยู่หลังจากรีบูต ให้เปิดไฟล์ที่ /etc/modules (Debian/Ubuntu) เพิ่ม softdog ในบรรทัดของตัวเอง และบันทึก ตอนนี้ให้ติดตั้ง Watchdog daemon และเปิดใช้งานด้วยคำสั่งด้านล่าง:
sudo apt install watchdog
sudo systemctl enable --now watchdog
เมื่อเสร็จแล้ว ก็ถึงเวลาเปิด /etc/watchdog.conf และมุ่งเน้นไปที่การตั้งค่าที่สำคัญบางประการ:
<หัว>การตั้งค่า
มันควบคุมอะไร
จุดเริ่มต้นการปฏิบัติ
ช่วงเวลา
ระบบจะเช็คอินบ่อยเพียงใด
10 วินาที
โหลดสูงสุด-1
โหลดเพดานเฉลี่ยก่อนรีบูต
~6× จำนวนแกน CPU
หน่วยความจำขั้นต่ำ
เพิ่มพื้นที่หน่วยความจำก่อนรีบูต
~512 หน้า (~2MB)
โหลดเฉลี่ยสำหรับโหลดสูงสุด-1 คือหนึ่งนาที ค่านี้แสดงถึงจำนวนกระบวนการที่แข่งขันกันเพื่อชิงเวลา CPU บนอุปกรณ์ของคุณ นี่หมายความว่าหากเครื่อง 4 คอร์มีโหลด 4.0 ทุกคอร์จะถูกครอบครองจนเต็ม จะปลอดภัยกว่าถ้าใช้จำนวนคอร์ของคุณเป็น 6 เท่าเพื่อให้ระบบของคุณมีพื้นที่เหลือสำหรับการระเบิดซึ่งอาจถูกต้องตามกฎหมายก่อนการล็อค
นอกจากนี้ โปรดทราบว่ามีการระบุหน่วยความจำขั้นต่ำในหน้าหน่วยความจำ ไม่ใช่เมกะไบต์ โดยทั่วไปแล้วหนึ่งเพจจะมีขนาด 4KiB บนระบบ x86_64 ดำเนินการตามนี้ จำนวนหน้า 512 หน้าจะมีหน่วยความจำว่างประมาณ 2MB
เมื่อคุณกำหนดค่าเหล่านี้เสร็จแล้ว ให้เรียกใช้คำสั่ง systemctl status watchdog เพื่อตรวจสอบว่า daemon ทำงานอยู่ และคำสั่ง journalctl -u watchdog ช่วยให้คุณสามารถตรวจสอบกิจกรรมได้
การหยุดบริการ Watchdog จะไม่ทำให้เกิดการรีบูต เนื่องจาก daemon จะปิด /dev/watchdog อย่างเรียบร้อยเมื่อออก ซึ่งจะปลดอาวุธตัวจับเวลาอย่างปลอดภัย หากต้องการทดสอบจริง ๆ ว่าหน่วยงานเฝ้าระวังจะรีบูทระบบของคุณ คุณต้องจำลองสภาวะความล้มเหลวจริง เช่น โหลดที่เพิ่มขึ้นอย่างรวดเร็วอย่างต่อเนื่อง
ไม่ใช่ทุกความผิดพลาดที่จำเป็นต้องรีบูต
ให้ systemd แก้ไขบริการที่เสียหายในไม่กี่วินาที
มีความล้มเหลวหลายประการที่ systemd สามารถจัดการได้ภายในไม่กี่วินาทีโดยไม่จำเป็นต้องรีบูตระบบ ตัวอย่างอาจเป็นบริการที่ขัดข้อง ออกโดยไม่คาดคิด หรือหยุดตอบสนอง คุณสามารถใช้การตรวจสอบเพื่อไม่ให้ทุกอย่างทำให้เกิดการรีบูตโดยไม่ต้องสัมผัสกับยูนิตดั้งเดิม รันคำสั่งด้านล่าง โดยเพิ่มชื่อบริการ:
sudo systemctl edit
จากนั้นเพิ่มสิ่งต่อไปนี้:
[Service]
Restart=on-failure
RestartSec=5
Restart=on-failure ช่วยให้มั่นใจว่าการรีสตาร์ทจะเกิดขึ้นเฉพาะเมื่อบริการออกพร้อมกับรหัสข้อผิดพลาด และ RestartSec=5 เป็นการหน่วงเวลาสั้นๆ ก่อนที่จะรีสตาร์ทจริงเพื่อป้องกันการวนซ้ำการรีสตาร์ทอย่างรวดเร็ว
การรวม StartLimitIntervalSec และ StartLimitBurst จะป้องกันไม่ให้บริการที่เสียหายเริ่มต้นใหม่ได้อย่างไม่มีกำหนด สิ่งเหล่านี้จำเป็นในการหยุดลูปข้อขัดข้อง แต่จะใช้ได้กับบริการที่ทำงานภายใน systemd เท่านั้น
การกู้คืนสองชั้นที่ครอบคลุมเกือบทุกความล้มเหลว
ทั้ง Watchdog และ Systemd Service Management จะไม่เสร็จสมบูรณ์ด้วยตัวมันเอง อย่างไรก็ตาม หากใช้ร่วมกันก็สามารถจัดการได้เกือบทุกอย่าง
<หัว>ประเภทความล้มเหลว
ชั้นการกู้คืน
ผลลัพธ์ที่คาดหวัง
บริการออกโดยมีข้อผิดพลาด
systemd (รีสตาร์ท =เมื่อล้มเหลว)
บริการเริ่มต้นใหม่ภายในไม่กี่วินาที
บริการออกจากการทำงานอย่างเรียบร้อย แต่ไม่ควร
systemd (รีสตาร์ท=เสมอ)
บริการเริ่มต้นใหม่ภายในไม่กี่วินาที
หยุดทำงานเต็มระบบหรือเกลียวโหลด
ภูตเฝ้าบ้าน
รีบูตอัตโนมัติ ไม่มีขั้นตอนแบบแมนนวล
systemd เหมาะอย่างยิ่งที่จะตรวจจับและรีสตาร์ทบริการที่ล้มเหลวแต่ละรายการ และโปรแกรมเฝ้าระวังจะอยู่เหนือบริการดังกล่าวเพื่อเฝ้าดูทั้งระบบและทริกเกอร์การรีสตาร์ทเมื่อมีสิ่งผิดปกติเกิดขึ้นเกินขีดจำกัดของ systemd
การผสมผสานนี้หมายความว่าคุณไม่จำเป็นต้องพร้อมใช้งานทุกครั้งที่มีข้อผิดพลาด และทำให้การจัดการเซิร์ฟเวอร์เป็นกิจกรรมที่น่าพึงพอใจยิ่งขึ้น นอกจากนี้ ให้พิจารณาการเรียนรู้คำสั่ง Linux เฉพาะที่ช่วยคุณแก้ไขปัญหาระบบส่วนใหญ่