วินิจฉัยปัญหาเซิร์ฟเวอร์ SUSE ที่ค้างอยู่ที่หน้าจอการปิดระบบของ systemd

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

คู่มือนี้อ้างอิงจากเอกสาร SLES 15 SP7 ที่ตรวจสอบเมื่อเดือนตุลาคม 2026 นโยบายการหยุดทำงานที่แน่นอนจะขึ้นอยู่กับผู้ให้บริการและผู้จำหน่ายอุปกรณ์จัดเก็บข้อมูล ดังนั้นโปรดใช้คำแนะนำของผู้จำหน่ายสำหรับรายละเอียดการเปลี่ยนแปลงใดๆ ที่เฉพาะเจาะจงกับอุปกรณ์นั้นๆ

1. สังเกตขั้นตอนการปิดระบบอย่างปลอดภัย

ขั้นตอนที่ 1: บันทึกข้อความอย่างแม่นยำและรอหลักฐานที่เป็นประโยชน์

หากคอนโซลแสดงข้อความ “กำลังดำเนินการหยุดการทำงานสำหรับ…” พร้อมกับตัวนับถอยหลัง ให้จดชื่อบริการหรือการเมานต์ และดูว่าตัวจับเวลาเปลี่ยนแปลงหรือไม่ นี่หมายความว่า systemd กำลังรอการหยุดการทำงานของหน่วยนั้น ไม่ได้หมายความว่าระบบปฏิบัติการล่มเสมอไป ฐานข้อมูลและพื้นที่จัดเก็บข้อมูลระยะไกลอาจต้องใช้เวลาในการปิดอย่างถูกต้อง

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

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

2. หาหน่วยที่กำลังรออยู่

ขั้นตอนที่ 2: ตรวจสอบงาน systemd ว่าเครื่องยังคงรับคำสั่งอยู่หรือไม่

หาก SSH หรือเทอร์มินัลตัวที่สองยังใช้งานได้ ให้ถาม systemd ว่ามีงานใดกำลังทำงานหรือรออยู่บ้าง จากนั้นตรวจสอบหน่วยที่แสดงชื่อบนหน้าจอ:

sudo systemctl list-jobs
sudo systemctl status SERVICE.service
ตัวอย่างผลลัพธ์จากคำสั่ง systemctl list-jobs บนเทอร์มินัล โดยแสดงการหยุดงาน เช่น service ที่อยู่ในสถานะกำลังทำงาน
รายการงานสามารถระบุบริการที่การดำเนินการหยุดยังคงทำงานอยู่ได้ โดยแถวที่แสดงเป็นตัวอย่าง

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

3. ใช้ข้อมูลการบูตครั้งก่อนเพื่อระบุสาเหตุ

ขั้นตอนที่ 3: อ่านส่วนท้ายของบันทึกประจำวันของรองเท้าคู่ก่อนหน้า

ไฟล์บันทึก (journal)คือไฟล์บันทึกที่มีการจัดทำดัชนีของ systemd ซึ่งรวบรวมข้อความจากเคอร์เนล บริการ และระบบ หลังจากเริ่มต้นระบบสำเร็จครั้งถัดไป ให้แสดงรายการการบูตที่บันทึกไว้ และตรวจสอบส่วนท้ายของการบูตครั้งก่อนหน้า:

sudo journalctl --list-boots
sudo journalctl -b -1 -e
ตัวอย่างเทอร์มินัลที่แสดงคำสั่ง journalctl boot-list และข้อความปิดระบบหลังจากบูตเครื่องครั้งก่อนเสร็จสิ้น
ค่า-1ออฟเซ็ตจะเลือกรายการบูตก่อนหน้า และ-eเลื่อนไปยังรายการล่าสุด

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

ขั้นตอนที่ 4: กรองบันทึกเพื่อค้นหาบริการที่ต้องสงสัย

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

sudo journalctl -b -1 -u SERVICE.service --no-pager
sudo systemctl cat SERVICE.service
ตัวอย่างการกรองเทอร์มินัลจากบันทึกการบูตก่อนหน้า เช่น ข้อความหยุดบริการ
การกรองตามหน่วยช่วยให้แยกแยะการปิดระบบบริการที่ช้าออกจากข้อความที่ไม่เกี่ยวข้องอื่นๆ ในบันทึกเหตุการณ์ได้

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

ขั้นตอนที่ 5: ตรวจสอบแท่นยึดและพื้นที่จัดเก็บเฉพาะเมื่อมีหลักฐานชี้ไปที่นั่น

หากบันทึกระบุถึงจุดเชื่อมต่อ อุปกรณ์ หรือระบบไฟล์ระยะไกล ให้ตรวจสอบตารางจุดเชื่อมต่อและรายการที่ตรงกันใน/etc/fstab:

sudo findmnt --verify --verbose
ตัวอย่างเทอร์มินัลที่กำลังรันคำสั่ง findmnt verification เพื่อตรวจสอบรายการและตัวเลือกการเมานต์
ใช้การตรวจสอบการเมานต์เมื่อบันทึกระบุว่ามีการเมานต์เกิดขึ้น รายการที่แสดงเป็นเพียงตัวอย่างและต้องตรวจสอบกับโฮสต์จริง

ตรวจสอบว่าสามารถเข้าถึงและคาดหวังการเชื่อมต่อกับระบบไฟล์ระยะไกล เช่น NFS, CIFS, iSCSI หรือระบบอื่นๆ ได้หรือไม่ในระหว่างการปิดระบบ ลบรายการเมานต์ที่ล้าสมัยออกก็ต่อเมื่อยืนยันแล้วว่าไม่ได้ใช้งาน อย่าบังคับยกเลิกการเมานต์ระบบไฟล์ที่กำลังทำงานอยู่เพียงเพราะการรีบูตช้า

4. แก้ไขต้นเหตุโดยไม่ปกปิด

ขั้นตอนที่ 6: ซ่อมแซมบริการหรือปรับเฉพาะนโยบายการหยุดทำงานที่ระบุไว้เท่านั้น

สำหรับบริการที่ไม่ทำงาน ให้แก้ไขสคริปต์การปิดระบบ การกำหนดค่าแอปพลิเคชัน หรือปัญหาเกี่ยวกับแพ็กเกจก่อน ไฟล์ drop-in ต่อหน่วยsudo systemctl edit SERVICE.serviceจะถูกจัดเก็บไว้โดย/etc/systemd/system/ไม่ต้องแก้ไขไฟล์ของผู้จำหน่าย เอกสารของ SUSE TimeoutSecเกี่ยวกับการเริ่มต้นหรือหยุดบริการ ให้ใช้ค่าที่ผู้จำหน่ายอนุมัติสำหรับเวิร์กโหลดนี้

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

หลังจากแก้ไขเสร็จแล้ว ให้โหลดคำจำกัดความของหน่วยระบบ systemd ใหม่ด้วยคำสั่ง `reload` sudo systemctl daemon-reloadและตรวจสอบผลลัพธ์ด้วยคำสั่ง ` sudo systemctl cat SERVICE.servicereload` การตั้งค่าหมดเวลาที่นานขึ้นอาจทำให้การปิดระบบที่ถูกต้องเสร็จสมบูรณ์ได้ แต่ก็อาจทำให้การรีบูตที่ล้มเหลวใช้เวลานานขึ้นเช่นกัน การตั้งค่าหมดเวลาที่สั้นเกินไปอาจทำให้บริการหยุดทำงานก่อนที่จะล้างสถานะ อย่าเปลี่ยนค่าเริ่มต้นทั่วโลกเพื่อซ่อนข้อบกพร่องของหน่วยระบบใดหน่วยระบบหนึ่ง

ขั้นตอนที่ 7: เก็บรักษาบันทึกต่างๆ ไว้สำหรับเหตุการณ์ครั้งต่อไป

โดยค่าเริ่มต้น SLES จะจัดเก็บข้อมูลบันทึกการบูตไว้ในไดเร็กทอรี/run/log/journal/ชั่วคราวนี้ และไดเร็กทอรีชั่วคราวนี้จะถูกล้างเมื่อรีบูต หากjournalctl -b -1ไม่มีรายการจากการบูตครั้งก่อน ให้เปิดใช้งานการจัดเก็บข้อมูลบันทึกแบบถาวรสำหรับการวินิจฉัยในอนาคต:

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix=/var/log/journal
sudo journalctl --flush
ตัวอย่างการใช้งานเทอร์มินัลเพื่อสร้างไดเร็กทอรีบันทึกถาวร ตั้งค่าสิทธิ์การเข้าถึง และล้างบันทึก
คำสั่งเหล่านี้จะเก็บรักษาบันทึกรายการใหม่ไว้แม้จะรีสตาร์ทเครื่อง แต่ไม่สามารถกู้คืนบันทึกที่สูญหายไปจากหน่วยความจำชั่วคราวได้

ไฟล์บันทึกถาวรใช้พื้นที่ภายใต้/varไดรฟ์นั้น SUSE ระบุว่าไฟล์บันทึกอาจใช้พื้นที่มากถึง 10 เปอร์เซ็นต์ของระบบไฟล์โดยค่าเริ่มต้น ตรวจสอบพื้นที่ว่างและระยะเวลาการเก็บรักษา โดยเฉพาะอย่างยิ่งใน/varไดรฟ์ ขนาดเล็ก

5. ตรวจสอบการรีบูตครั้งถัดไปที่วางแผนไว้

ขั้นตอนที่ 8: ยืนยันว่าการหยุดทำงานเสร็จสมบูรณ์และเซิร์ฟเวอร์กลับมาใช้งานได้แล้ว

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

sudo journalctl -b -1 -e
sudo systemctl status SERVICE.service
ภาพหน้าจอเทอร์มินัลแสดงตัวอย่างการหยุดบริการที่เสร็จสมบูรณ์ในการบูตครั้งก่อน และการตรวจสอบสถานะบริการปัจจุบัน
หลังจากรีสตาร์ทในภายหลัง โปรดตรวจสอบว่าการปิดระบบครั้งก่อนได้แสดงข้อความสุดท้ายเสร็จสิ้นแล้ว และบริการกลับมาทำงานได้อย่างปกติอีกครั้ง นี่เป็นเพียงตัวอย่าง ไม่ใช่หลักฐานการทดสอบ

ปัญหาจะได้รับการแก้ไขเมื่อเซิร์ฟเวอร์ปิดตัวลงโดยไม่ต้องรอหน่วยเดิม บูตเครื่องตามปกติ และบริการหรือการเมานต์ทำงานได้ หากบันทึกการทำงานสิ้นสุดลงอย่างกะทันหันหรือแสดงข้อผิดพลาดของเคอร์เนล คอนโทรลเลอร์ หรือฮาร์ดแวร์ ให้เก็บรักษาบันทึกเหล่านั้นไว้และตรวจสอบกับ SUSE หรือผู้จำหน่ายฮาร์ดแวร์แทนที่จะปรับแต่งค่าหมดเวลา

สำหรับรายละเอียดคำสั่ง โปรดดูคู่มือ systemd ของ SLES 15 SP7และคู่มือของ SUSE เกี่ยวกับบันทึกถาวรและตัวกรอง journalctlขั้นตอนเหล่านี้ระบุตัวบล็อกที่น่าจะเป็นไปได้ การแก้ไขปัญหาที่ถูกต้องสำหรับบริการ ระบบไฟล์ หรือฮาร์ดแวร์นั้นขึ้นอยู่กับหน่วยที่ระบุโดยบันทึกของเครื่องเอง

ฝากความเห็น

รีเซ็ตรหัสผ่านผู้ดูแลระบบ Nextcloud ที่ลืมไปโดยใช้ OCC

ใช้คำสั่ง OCC ของ Nextcloud เพื่อรีเซ็ตรหัสผ่านผู้ดูแลระบบจากเชลล์เซิร์ฟเวอร์ พร้อมคำแนะนำสำหรับชื่อผู้ใช้ สิทธิ์ และผู้ให้บริการเข้าสู่ระบบภายนอก

เพิ่มส่วนหัว HSTS ที่ปลายทาง HTTPS ที่ให้บริการ Nextcloud

ล้างคำเตือน HSTS ของ Nextcloud โดยการตั้งค่าส่วนหัวที่ Apache, NGINX หรือพร็อกซี TLS ของคุณ จากนั้นตรวจสอบการตอบสนอง HTTPS สาธารณะอย่างปลอดภัย

แก้ไขปัญหาการติดตั้งแอป Nextcloud ที่แจ้งว่าไม่มีการเชื่อมต่ออินเทอร์เน็ต

แก้ไขปัญหาการติดตั้งแอป Nextcloud ที่แจ้งว่าไม่มีการเชื่อมต่ออินเทอร์เน็ต

ตรวจสอบหาสาเหตุของการติดตั้งแอปจาก App Store ที่ล้มเหลว ไม่ว่าจะเป็นปัญหาจาก DNS, HTTPS, พร็อกซี, TLS หรือปัญหาการตั้งค่าจากเซิร์ฟเวอร์ Nextcloud เอง

แก้ปัญหา CPU กระชากเร็วใน Nextcloud Preview ด้วยคิวที่กำหนดเวลาไว้

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

รับการซิงค์ข้อมูลบนเดสก์ท็อป Nextcloud โดยไม่ต้องแสดงสถานะ “กำลังประมวลผลไฟล์” อีกต่อไป

ค้นหาไฟล์ กฎการยกเว้น ปัญหาการเชื่อมต่อ หรือสถานะฐานข้อมูลไคลเอ็นต์ที่ทำให้การซิงค์ Nextcloud หยุดชะงัก จากนั้นตรวจสอบการอัปโหลดและดาวน์โหลดอย่างปลอดภัย

ล้างคำเตือน Nextcloud OPcache โดยการปรับขีดจำกัดให้ถูกต้อง

ค้นหาข้อจำกัดของ PHP OPcache ที่ทำให้เกิดคำเตือนของ Nextcloud อัปเดตการตั้งค่า PHP สำหรับเว็บให้ถูกต้อง รีสตาร์ทอย่างปลอดภัย และตรวจสอบผลลัพธ์

เชื่อมต่อ Nextcloud กับ CODE Docker: การตั้งค่าและข้อดีข้อเสีย

เชื่อมต่อ Nextcloud กับ CODE Docker: การตั้งค่าและข้อดีข้อเสีย

เปรียบเทียบ CODE ที่ติดตั้งมากับระบบและ CODE ที่ใช้ Docker จากนั้นเชื่อมต่อ Collabora Online กับ Nextcloud ผ่านพร็อกซีแบบย้อนกลับ HTTPS ที่ปลอดภัย

สร้างคลัสเตอร์ Nextcloud ที่ทนทานด้วย Galera

วางแผนการใช้งาน Nextcloud HA ที่เชื่อถือได้ โดยใช้พื้นที่จัดเก็บข้อมูลร่วมกัน การล็อก Redis การกำหนดเส้นทาง MariaDB ที่คำนึงถึงจำนวนเสียงข้างมาก และการตรวจสอบการทำงานล้มเหลวที่ใช้งานได้จริง

รับสาย Nextcloud Talk ได้เมื่อการเชื่อมต่อ Direct Media ล้มเหลว

รับสาย Nextcloud Talk ได้เมื่อการเชื่อมต่อ Direct Media ล้มเหลว

กำหนดค่าและตรวจสอบรีเลย์ TURN ที่สามารถเข้าถึงได้สำหรับ Nextcloud Talk เมื่อไฟร์วอลล์หรือ NAT ที่จำกัดปิดกั้นสื่อการโทรโดยตรง

ล้างคำเตือนเกี่ยวกับความสมบูรณ์ของข้อมูลใน Nextcloud โดยการกู้คืนไฟล์ที่ถูกต้อง

ใช้รายงานไฟล์ที่ไม่ถูกต้องเพื่อระบุโค้ด Nextcloud ที่เปลี่ยนแปลง หายไป หรือเกินมา กู้คืนไฟล์ที่เชื่อถือได้อย่างปลอดภัย และตรวจสอบผลลัพธ์