หากคุณใช้ Linux distro สมัยใหม่ คุณจะพบข้อความ “A stop job is running” ระหว่างการปิดระบบ และจะหยุดกระบวนการปิดระบบชั่วคราวสูงสุด 90 วินาที ค้นหาว่าเหตุใดข้อความนี้จึงปรากฏขึ้น และคุณจะแก้ไขได้อย่างไร
สารบัญ
เป็นคุณลักษณะด้านความปลอดภัย ไม่ใช่ข้อบกพร่อง
สิ่งแรกสุดที่คุณต้องรู้คือข้อความ “A stop job is running” เป็นคุณลักษณะด้านความปลอดภัยที่มีอยู่ในระบบ ไม่ใช่จุดบกพร่อง
ลีนุกซ์สมัยใหม่เช่น Ubuntu, Fedora และ Arch ใช้ Systemd เพื่อจัดการกระบวนการบูตและปิดระบบ เมื่อคุณคลิกปิดระบบ Systemd จะไม่เพียงแค่ดึงปลั๊กไฟเท่านั้น จะส่งสัญญาณสุภาพที่เรียกว่า SIGTERM ให้กับทุกบริการและแอปพลิเคชันที่ทำงานอยู่ หลังจากรับสัญญาณนี้ แอปพลิเคชันส่วนใหญ่จะบันทึกข้อมูล ปิดไฟล์ และปิดระบบอย่างสวยงาม
อย่างไรก็ตาม บริการบางอย่างต้องใช้เวลามากขึ้นในการทำงานให้เสร็จสิ้นและเพิกเฉยต่อสัญญาณ นั่นคือเมื่อคุณเห็นข้อความเตือน ความล่าช้านี้มักเกิดขึ้นเนื่องจากบริการบางอย่าง เช่น ผู้จัดการเครือข่าย คอนเทนเนอร์ เซสชันผู้ใช้ หรือไดรฟ์ที่เชื่อมต่อเครือข่าย ต้องใช้เวลาเพิ่มเติมเพื่อปิดการเชื่อมต่อหรือบันทึกข้อมูลอย่างปลอดภัย
ผู้ใช้ Linux จำนวนมากค้นหาวิธีแก้ไขเมื่อเห็นข้อความ “A Stop Job is Running” สมมติว่ามีบางอย่างเสียหาย ความจริงก็คือนักพัฒนา Systemd สร้างพฤติกรรมนี้โดยตั้งใจ โดยพื้นฐานแล้ว Systemd จะใช้เวลารอประมาณ 90 วินาทีเพื่อให้บริการเพื่อทำงานที่ค้างอยู่ให้เสร็จสิ้น หากบริการไม่เสร็จสิ้นภายในระยะหมดเวลาที่กำหนดไว้ Systemd จะบังคับให้ยุติบริการโดยใช้ SIGKILL และดำเนินกระบวนการปิดระบบต่อไป
ด้วยการปิดระบบอย่างสง่างามนี้ แอปพลิเคชันจำนวนมากจะเสร็จสิ้นสิ่งที่พวกเขาทำอยู่ เช่น การปิดไฟล์ การทำธุรกรรมฐานข้อมูลให้เสร็จสิ้น และการยกเลิกการต่อเชื่อมระบบไฟล์อย่างหมดจด คุณยังคงสามารถยกเลิกการรอและทำให้การปิดเครื่องเร็วขึ้นได้ แต่การทำเช่นนี้ยังเพิ่มความเสี่ยงในการสูญเสียการเขียนหรือธุรกรรมล่าสุด ฐานข้อมูลหรือไฟล์เจอร์นัลเสียหาย หรือปล่อยให้ไดรฟ์ที่เมาท์อยู่ในสถานะไม่เสถียร
การลดระยะหมดเวลาเริ่มต้น
การรอตามค่าเริ่มต้น 90 วินาทีจะสร้างความสมดุลให้กับผู้ใช้ Linux จำนวนมาก โดยเฉพาะผู้ที่ใช้ฮาร์ดแวร์รุ่นเก่า เนื่องจากบริการส่วนใหญ่จะใช้เวลาในการล้างข้อมูลให้เสร็จสิ้น อย่างไรก็ตาม สำหรับผู้ใช้ที่ใช้แล็ปท็อปหรือระบบเดสก์ท็อปสมัยใหม่ 90 วินาทีอาจรู้สึกว่ามากเกินไป
ไม่ว่าจะด้วยเหตุผลใดก็ตาม คุณสามารถปรับแต่งไฟล์การกำหนดค่าระบบและลดระยะหมดเวลาโดยบอกให้ systemd ให้บริการที่ยังไม่เสร็จภายในเวลาที่กำหนดเพื่อทำงานให้เสร็จสิ้น
ในการเริ่มต้น ให้เปิดเทอร์มินัลของคุณและใช้โปรแกรมแก้ไขข้อความที่คุณต้องการเพื่อแก้ไขไฟล์การกำหนดค่าระบบ:
sudo nano /etc/systemd/system.conf
ถัดไป ค้นหาตัวแปรการหมดเวลา คุณจะเห็นข้อความจำนวนมากซึ่งแสดงถึงการตั้งค่าส่วนกลางสำหรับระบบของคุณ มองหาบรรทัดที่คล้ายกับ #DefaultTimeoutStopSec=90s . สัญลักษณ์แฮชที่จุดเริ่มต้นของบรรทัดหมายความว่าถูกใส่ความคิดเห็นหรือปิดใช้งาน ขณะนี้ระบบกำลังใช้ค่าเริ่มต้นภายใน ซึ่งก็คือ 90 วินาที
หากต้องการแก้ไขค่า ขั้นแรกให้ลบสัญลักษณ์แฮชเพื่อเปิดใช้งานเส้น จากนั้นเปลี่ยน 90 วินาทีเป็นระยะเวลาที่สั้นลงตามความต้องการของคุณ
คำเตือน :อย่าตั้งค่านี้เป็น 0 การตั้งค่าเป็น 0 จะสร้างการหมดเวลาที่ไม่สิ้นสุด ซึ่งหมายความว่าระบบจะรอตลอดไปเพื่อให้กระบวนการหยุด นั่นตรงกันข้ามกับสิ่งที่เราต้องการ ค่าช่วงกลาง (20–30 วินาที) เป็นการประนีประนอมในทางปฏิบัติสำหรับผู้ใช้จำนวนมาก
เมื่อเสร็จแล้ว ให้บันทึกและออกจากโปรแกรมแก้ไข หากต้องการใช้การเปลี่ยนแปลง คุณจะต้องรีบูต เนื่องจากปัญหานี้เกิดขึ้นระหว่างการปิดระบบ คุณอาจพบว่ามีการรอนานเป็นครั้งสุดท้าย หลังจากการบู๊ตครั้งถัดไป ขีดจำกัดวินาทีใหม่จะมีผล
หมายเหตุ :ในบางกรณี คุณอาจต้องเปิดใช้งาน #DefaultDeviceTimeoutSec=90s เกินไปสำหรับการทำงาน
เมื่อการหมดเวลาอาจบ่งบอกถึงปัญหา
ในกรณีส่วนใหญ่ การหยุดงานหมดเวลาเป็นพฤติกรรมปกติ อย่างไรก็ตาม บางครั้งอาจชี้ไปที่ปัญหาที่ซ่อนอยู่ โดยเฉพาะอย่างยิ่งหากบริการเดียวกันทำให้การปิดระบบล่าช้าซ้ำๆ การต่อเชื่อมเครือข่ายอาจไม่สามารถเข้าถึงได้ ภูตอาจถูกกำหนดค่าไม่ถูกต้อง หรือบริการอาจไม่ตอบสนองต่อสัญญาณการปิดระบบอย่างเหมาะสม
หากคุณสังเกตเห็นการปิดระบบใช้เวลาไม่กี่นาทีแทนที่จะเป็นวินาที หรือบริการเดิมหมดเวลาทุกครั้ง ก็คุ้มค่าที่จะตรวจสอบ ความล่าช้าเป็นครั้งคราวมักไม่เป็นอันตราย แต่ความล่าช้าที่เกิดขึ้นอย่างสม่ำเสมอบ่งชี้ว่ามีบางสิ่งที่ต้องได้รับการดูแล
หากต้องการระบุบริการที่ทำให้เกิดความล่าช้า ให้ตรวจสอบบันทึกหลังจากรีบูตจากการปิดระบบที่ช้า:
journalctl -b -1 -e
คำสั่งนี้จะแสดงบันทึกจากการบู๊ตครั้งก่อนและข้ามไปยังจุดสิ้นสุด คุณสามารถเลื่อนขึ้นเพื่อค้นหาคำเตือน ข้อความหมดเวลา หรือบริการที่ระบบบังคับให้หยุดทำงาน
นอกจากนี้ คุณยังสามารถจำกัดสิ่งต่างๆ ให้แคบลงได้โดยการดูข้อความระดับคำเตือน:
journalctl -b -1 -p warning
การตรวจสอบที่มีประโยชน์อีกอย่างหนึ่งคือการรันคำสั่ง Systemd analyse นี้:
systemd-analyze blame แม้ว่าคำสั่งนี้จะเน้นที่เวลาเริ่มต้นระบบ แต่บริการที่เริ่มทำงานช้ามักจะทำงานคล้ายกันระหว่างการปิดระบบ บริการทั่วไปอื่นๆ บางอย่างที่มีแนวโน้มที่จะกระตุ้นให้เกิดข้อความหยุดงาน ได้แก่:
- บริการเครือข่าย
- ระบบไฟล์ระยะไกล เช่น NFS หรือ SMB
- เซิร์ฟเวอร์ฐานข้อมูล
- ผู้จัดการคอนเทนเนอร์และเครื่องเสมือน
- ไดรฟ์ภายนอก และยูนิตติดตั้งอัตโนมัติ
การเมาท์บนเครือข่ายมีแนวโน้มที่จะเกิดความล่าช้าเป็นพิเศษหากการเชื่อมต่อไม่เสถียรหรือไม่สามารถใช้งานได้อีกต่อไป นอกจากนี้ การลดระยะหมดเวลาการปิดระบบลงอาจทำให้การปิดระบบเร็วขึ้น แต่ไม่สามารถแก้ไขปัญหาที่ซ่อนอยู่ได้ หากบริการทำให้การปิดระบบล่าช้าอย่างต่อเนื่อง การระบุสาเหตุที่แท้จริงจะสร้างผลลัพธ์ในระยะยาวที่ดีกว่า
ความคิดสุดท้าย
Linux ช่วยให้คุณสามารถควบคุมระบบของคุณได้ในระดับสูง รวมถึงระยะเวลาในการรอให้บริการที่ดื้อรั้นปิดตัวลง คุณยังสามารถจัดการแอปพลิเคชันพื้นหลังและปิดใช้งานบริการที่ไม่จำเป็นเพื่อปรับปรุงทั้งเวลาปิดเครื่องและบูตได้