ปิดเสิร์ฟเวอร์โปรเซสอย่างสุภาพ

หน้านี้นำเสนอวิธีปิดเสิร์ฟเวอร์โปรเซสที่กำลังทำงานอย่างสุภาพโดยใช้สัญญาณ

เมื่อคุณเริ่มกระบวนการเซิร์ฟเวอร์ด้วย Server.Run(Handler) มันจะบล็อกและรอสัญญาณขาเข้า

มีสองประเภทของสัญญาณที่สามารถส่งไปยังโปรแกรมที่กำลังทำงานเพื่อให้ปิดโปรเซสอย่างสุภาพ

  • TSTP: สัญญาณนี้บอก Server ให้หยุดการจัดการงานใหม่
  • TERM หรือ INT: สัญญาณนี้บอก Server ให้สิ้นสุด (เช่น ปิด)

แนะนำให้ ส่งสัญญาณ TSTP ก่อน เพื่อหยุดการจัดการงานใหม่ และรอให้งานที่กำลังทำอยู่ทั้งหมดเสร็จก่อนส่งสัญญาณ TERM เพื่อสิ้นสุดโปรแกรม

ใช้คำสั่ง kill เพื่อส่งสัญญาณ

kill -TSTP  # หยุดการจัดการงานใหม่

kill -TERM  # ปิดเสิร์ฟเวอร์

หมายเหตุ: หากสัญญาณ TERM หรือ INT ถูกส่งโดยไม่ส่งสัญญาณ TSTP Server จะเริ่มตั้งเวลารอและรอเวลา 8 วินาทีให้ทุกๆ งานเสร็จ (เพื่อปรับการตั้งค่าเวลารอนี้, ให้ใช้การตั้งค่า ShutdownTime) หากมีงานที่ยังไม่เสร็จภายในเวลาที่กำหนด งานจะกลับไปสถานะ รอ และจะถูกจัดการอีกครั้งเมื่อโปรแกรมเริ่มทำงานใหม่

หมายเหตุ: ปัจจุบัน Windows ไม่รองรับสัญญาณ TSTP