productize.life
TH EN
AI · ระบบเบื้องหลัง

daemon ที่ตายไป สองสัปดาห์ โดยไม่มีใครรู้

daemon คือโปรแกรมที่รันอยู่เบื้องหลังตลอดเวลา ปัญหาใหญ่ของมันไม่ใช่การพัง แต่คือการพังแบบไม่มีสัญญาณ นี่คือเรื่องของตัวหนึ่งที่ตายไปเงียบ ๆ สองสัปดาห์ และสิ่งที่มันสอนเรา

Yim· เขียนด้วยกันกับ Dobby (AI Oracle)/24 ก.ค. 2026

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

ตัวที่คอยดึงราคานั่นแหละคือ daemon ตัวหนึ่ง มันเป็นโปรแกรมที่เราตั้งให้เปิดค้างไว้ ทำงานของมันเองเบื้องหลังตลอด โดยที่เราไม่ต้องไปสั่งทีละครั้ง แต่พอไม่มีใครนั่งเฝ้า วันที่มันล้มลง ก็เลยไม่มีเสียงอะไรดังขึ้นมาบอก

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

ช่วงที่ 1daemon คืออะไรกันแน่

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

พอไม่มีหน้าจอ มันก็ต้องมีตัวคอยดูแลแทนคน บนลินุกซ์ตัวนั้นคือ systemd หรือ cron หน้าที่ของมันคือคอยสั่งให้ daemon เริ่มทำงานตอนเปิดเครื่อง และคอยปลุกมันขึ้นมาใหม่ถ้าเกิดล้มลง ฟังดูเหมือนปลอดภัยดี แต่เดี๋ยวจะเล่าว่าตัวปลุกนี่แหละที่บางทีก็หลอกเราได้เหมือนกัน

ของจริงในบ้านเรามีอะไรบ้าง

ที่บ้านเรา (กองระบบเล็ก ๆ ที่เราดูแลเอง) มี daemon อยู่หลายตัว แต่ละตัวทำงานคนละอย่าง

เสน่ห์ของ daemon คือ ตั้งครั้งเดียวแล้วลืมมันไปได้เลย ไม่ต้องมานั่งกดเองทุกวัน แต่เสน่ห์ข้อนี้แหละที่ซ่อนกับดักไว้ ของที่เราลืมไปได้ ก็คือของที่ไม่มีใครมองมันเหมือนกัน วันที่มันเงียบหายไป เราก็เลยไม่ทันสังเกต เพราะความเงียบของมันในวันปกติ กับความเงียบในวันที่มันตาย (หยุดรันไปเฉย ๆ) หน้าตาเหมือนกันเป๊ะ ทั้งบทความนี้เราจะเรียกอาการที่ daemon หยุดทำงานว่า "ตาย" ตามคำที่สายเขียนโปรแกรมใช้กันจริง

ช่วงที่ 2ทำไม daemon ถึงตายเงียบ ๆ

เคสของ daemon ที่ตายเงียบ ๆ ในบ้านเรามีหน้าตาเหมือนกันหมด ตัวหนึ่งข้างในล้มลง แต่มีตัวสำรองนุ่ม ๆ รับไว้ ผิวนอกเลยยังทำงานได้ ไม่มีใครรู้ แล้วก็ลากยาว ขอเล่าสี่ตัวที่เจอกับตัวเอง

ตัวที่ตายไปสองสัปดาห์

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

สมองที่โดนสับเป็นตัวเล็กลง

อีกกลุ่มหนึ่งคือ daemon ที่ต้องเรียกใช้ AI ตัวเก่งเป็นสมอง วันหนึ่งกุญแจที่ใช้ยืนยันตัวตนหมดอายุ พอเรียกตัวเก่งไม่ได้ มันก็ถอยไปใช้โมเดลตัวเล็กที่รันในเครื่องแทน ผลคือทุกตัว ยังตอบได้เหมือนเดิม แค่ตอบโง่ลง พอมันยังตอบได้ ก็เลยไม่มีใครเอะใจไปถาม ลากไปสี่วันกว่าจะจับได้ สัญญาณเดียวที่โผล่มาให้เห็นคือ error เล็ก ๆ ในงานตัวเดียวเท่านั้นเอง

ตัวที่ไม่เคยทำงานเลยตั้งแต่แรก

ตัวนี้หนักกว่าเพื่อน มีสคริปต์ตัวหนึ่งที่เขียนไว้ให้สรุปสถานะให้อ่านทุกครั้งที่เปิดงาน ปรากฏว่ามันมี error ตั้งแต่บรรทัดแรก แต่โค้ดดันเขียนดักไว้แบบ "ถ้าพังก็ช่างมัน" พอพังปุ๊บ มันเลยตอบกลับมาเฉย ๆ ว่า "ไม่มีข้อมูล" ทุกครั้ง เราอ่านคำว่าไม่มีข้อมูล แล้วนึกว่ามันทำงานแต่ไม่เจออะไร ที่จริงมัน ไม่เคยทำงานสำเร็จเลยสักครั้งตลอดอายุของมัน แค่พังอย่างสุภาพจนดูเหมือนปกติ

ตัวเฝ้าเงินที่ล้มแบบไม่ทิ้งรอย

ตัวสุดท้าย เป็นตัวคอยเฝ้าค่าใช้จ่าย มันตายไป แล้วตัวตั้งเวลา (cron) ก็ยังพยายามเรียกมันซ้ำวันละหลายรอบ เรียกแล้วพัง รวมแล้วสองร้อยกว่าครั้ง แต่ไม่มีการเขียนบันทึกไว้เลยแม้แต่บรรทัดเดียว มันพังเงียบสนิทชนิดที่ย้อนไปดูก็ไม่เจอรอย

บทเรียนร่วมของทั้งสี่ตัว

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

ช่วงที่ 3ทำให้มันส่งเสียงตอนตาย

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

1. ตัวสำรองต้องประกาศตัวเสมอ

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

2. ตัวเตือนต้องพิสูจน์ว่าส่งถึง และต้องมีสัญญาณชีพ

ตัวเตือนที่ยิงข้อความแล้วเชื่อว่าถึงปลายทางเอง เป็นตัวเตือนที่ไว้ใจไม่ได้ เราเคยมีตัวเฝ้าที่ยิง alert ออกไป แต่ไม่เช็คว่าปลายทางรับหรือเปล่า แล้วจดใส่ตัวเองว่า "เตือนไปแล้ว" พอวันที่ข้อความส่งไม่ถึงจริง ๆ มันก็จำว่าเตือนแล้ว เลยไม่ยิงซ้ำ alert ที่ส่งไม่ถึงเลยหายไปถาวร ตัวเตือนที่ดีต้องจับให้ได้ว่าปลายทางรับจริงไหม และต้องส่งสัญญาณชีพเป็นจังหวะด้วย เพื่อให้เราแยกออกว่า "เงียบเพราะทุกอย่างปกติ" กับ "เงียบเพราะตัวเตือนเองก็ตายไปแล้ว" ไม่ใช่เรื่องเดียวกัน

3. เช็คให้ลึกกว่าคำว่า "ยังตอบอยู่ไหม"

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

สามชั้นที่เราวางไว้กันเรื่องนี้

พอเก็บบทเรียนมาครบ เราเลยวางตัวเฝ้าไว้สามชั้นซ้อนกัน แนวคิดเรียบง่าย

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

กุญแจของสามชั้นนี้คือ ชั้นบนคอยเฝ้าชั้นล่างด้วย รวมถึงเช็คว่าสัญญาณจากข้างล่างยัง "สด" อยู่ ไม่ใช่ค้างมาจากเมื่อวาน เพราะไม่งั้นตัวเฝ้าเองก็ตายเงียบได้เหมือนกัน ส่วนวิธีต่อสายให้สามชั้นนี้ทำงานเองอัตโนมัติจริง ๆ เป็นส่วนที่เราลงแรงทำต่อและขอเก็บรายละเอียดไว้ แต่หลักคิดสามข้อข้างบนเอาไปใช้ได้เลยโดยไม่ต้องมีเครื่องมืออะไรพิเศษ

สรุปสั้น ๆ ก่อนจบ

daemon คือโปรแกรมที่รันเบื้องหลังตลอดเวลา ข้อดีคือตั้งแล้วลืมได้ ข้อเสียก็คือข้อเดียวกัน พอลืมมันไปได้ วันที่มันตายก็เลยไม่มีใครรู้ ยิ่งเราใส่ตัวสำรองที่ดีเข้าไปเท่าไร มันยิ่งตายเงียบเท่านั้น กฎที่เหลือมีข้อเดียว ทุกอย่างที่รันเองเงียบ ๆ ต้องถูกบังคับให้ส่งเสียงตอนที่มันเริ่มไม่ปกติ

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

ที่มาและอ้างอิง
ติดตาม

รับบทความใหม่และของฟรีก่อนใคร

ทิ้งอีเมลไว้ บทความใหม่และของฟรีเป็นครั้งคราวจะส่งไปให้ ไม่สแปม

ใช้อีเมลเพื่อส่งอัปเดตเท่านั้น

ความคิดเห็น

ร่วมพูดคุย

แบ่งปันความคิดเห็นได้เลย

ชื่อจะแสดงต่อสาธารณะ อีเมลเก็บเป็นความลับ ไม่แสดงที่ไหน

กำลังโหลดความคิดเห็น…