ซีรีส์ เขียนโปรแกรมพื้นฐาน · ตอนที่ 5 จาก 7
ปิดหน้าต่างแล้ว โปรแกรมอาจยังไม่หยุด: โปรแกรมเบื้องหลังคืออะไร ดูที่ไหน ปิดอย่างไรให้ปลอดภัย
16 ต.ค. 2569 · อ่าน 13 นาที
ปิดโปรแกรมไปแล้ว แต่โปรแกรมอาจยังรันอยู่เบื้องหลังในเครื่องคุณ บทความนี้อธิบายว่า process คืออะไร ทำไมเครื่องมือ AI เขียนโค้ดบางตัวทิ้งโปรแกรมไว้เบื้องหลัง ดูได้ที่ไหนทั้งบน Windows และ Mac พร้อมกติกาปิดอย่างปลอดภัย คือ ถ้าไม่รู้จัก อย่าปิด ให้ค้นหรือถามก่อน

สมมติคุณให้ AI ช่วยทำเว็บทดลองบนเครื่อง AI เปิดเซิร์ฟเวอร์ไว้ให้ดูที่ localhost:3000 เมื่อเสร็จงานคุณก็ปิดหน้าต่างไป วันรุ่งขึ้นสั่งเปิดใหม่ กลับขึ้นข้อความว่า "port 3000 ถูกใช้อยู่แล้ว"
เซิร์ฟเวอร์ของเมื่อวานยังรันอยู่ ทั้งที่ไม่มีหน้าต่างให้เห็นแล้ว
บทความนี้เป็นตอนที่ 5 ของซีรีส์ "เขียนโปรแกรมพื้นฐาน" ว่าด้วย โปรแกรมที่รันอยู่เบื้องหลัง ว่าคืออะไร ดูได้ที่ไหน และปิดอย่างไรโดยไม่ทำให้เครื่องพัง
ข้อมูล ณ 16 ตุลาคม 2569 คำสั่งในหน้าต่างพิมพ์คำสั่ง (terminal) เราลองบน macOS 26 เมนูของ Activity Monitor มาจากคู่มือของ Apple ซึ่งเรายังไม่ได้เปิดแอปทดสอบทีละขั้น ส่วนวิธีบน Windows มาจากหน้าช่วยเหลือของ Microsoft และเรายังไม่ได้ลองบนเครื่อง Windows ถ้าเครื่องของคุณเป็นระบบรุ่นอื่น ให้มองหาเมนูที่ชื่อใกล้เคียงกัน
process คืออะไร
process (โปรเซส) คือโปรแกรมที่กำลังทำงานอยู่ในเครื่องตอนนี้ 1 ตัว
Apple อธิบายในคู่มือ Activity Monitor ว่า process คือโปรแกรมที่กำลังรันบน Mac ซึ่งอาจเป็นแอป แอปของระบบที่ macOS ใช้ หรือ process เบื้องหลังที่มองไม่เห็น
ส่วน Microsoft อธิบายว่า Task Manager ของ Windows แบ่ง process ที่กำลังทำงานเป็น 3 กลุ่ม คือ แอป process เบื้องหลัง และ process ของ Windows
เปรียบเหมือนร้านที่ปิดหน้าร้านแล้ว แต่ยังมีพนักงานนั่งทำงานอยู่หลังร้าน
- หน้าต่างโปรแกรม เหมือนหน้าร้าน เราเห็นและปิดเองได้
- process เบื้องหลัง เหมือนพนักงานหลังร้าน ไม่มีหน้าต่าง แต่ยังใช้ไฟ ใช้แรม และบางตัวยังเชื่อมต่ออินเทอร์เน็ต
ปิดหน้าต่าง ไม่ได้แปลว่าโปรแกรมหยุด
โปรแกรมเบื้องหลังส่วนใหญ่เป็นเรื่องปกติและตั้งใจให้ทำงานแบบนั้น ตารางนี้เป็นตัวอย่างที่เจอบ่อย (ตัวอย่างทั่วไป ไม่ได้เจาะจงยี่ห้อ)
| แบบ | ทำไมต้องรันต่อ | ปกติไหม |
|---|---|---|
| แอปซิงก์ไฟล์ขึ้นคลาวด์ | ต้องคอยส่งไฟล์ที่เพิ่งแก้ขึ้นไป | ปกติ |
| ตัวอัปเดตของโปรแกรม | คอยเช็กว่ามีรุ่นใหม่ไหม | ปกติ ถ้าเรารู้ว่ามี |
| เซิร์ฟเวอร์ทดลองที่เครื่องมือ AI เขียนโค้ดเปิดไว้ | ให้เราเปิดดูเว็บที่กำลังทำ | ควรปิดเมื่อเลิกใช้ |
| ส่วนของระบบปฏิบัติการ | ทำให้เครื่องทำงานได้ | ห้ามแตะ |
ปัญหาไม่ได้อยู่ที่การมีโปรแกรมเบื้องหลัง แต่อยู่ที่ เราไม่รู้ว่ามี เพราะโปรแกรมนั้นกินแรม จอง port (ช่องที่โปรแกรมใช้รับการเชื่อมต่อ เช่น 3000) จนรอบหน้าเปิดไม่ได้ หรือยังเชื่อมต่ออินเทอร์เน็ตอยู่โดยเราไม่ได้ตั้งใจ
ตัวอย่างจากกระแส: เธรดใน GitHub ของ Codex CLI
Codex CLI คือเครื่องมือ AI เขียนโค้ดแบบพิมพ์คำสั่งของ OpenAI ในหน้ารับเรื่อง (issue) บน GitHub ของโปรเจกต์นี้ มีผู้ใช้เปิดเรื่องเมื่อ 25 กันยายน 2569 เพื่อขอให้ฟีเจอร์ daemon_auto_start เป็นแบบ "ต้องเปิดเอง" แทนแบบที่เปิดให้อัตโนมัติ
ผู้ใช้รายงานในเธรดว่า ตั้งแต่รุ่น 0.157.0 เมื่อเปิดใช้งาน Codex แบบโต้ตอบ
- Codex เริ่ม daemon (โปรแกรมที่ตั้งใจให้รันเบื้องหลังยาวๆ) ที่ ยังรันต่อหลังปิดหน้าต่าง Codex ทุกบาน จนกว่าจะสั่งหยุดหรือรีสตาร์ตเครื่อง
- มีตัวอัปเดตแยกออกมาอีกตัว ซึ่งเช็กอัปเดตทุกชั่วโมงและดาวน์โหลดรุ่นใหม่เอง
- ผู้ใช้คนเดียวกันรายงานว่า สั่งหยุด daemon แล้ว ตัวอัปเดตยังรันค้างอยู่
ผู้เปิดเรื่องใช้บน Linux (ผ่าน WSL2) และมีผู้ใช้อีกคนยืนยันว่าเจอบน Windows 10 ณ วันที่ 16 ตุลาคม 2569 เธรดยังเปิดอยู่ และยังไม่เห็นคำตอบจากทีม OpenAI ในเธรด
ทั้งหมดนี้เป็น คำบอกเล่าของผู้ใช้ ไม่ใช่ข้อยืนยันจาก OpenAI และเราไม่ได้ลองเอง จึงไม่สรุปว่าใครผิด ที่หยิบมาเล่าเพราะเรื่องนี้แสดงให้เห็นชัดว่า เครื่องมือที่เราใช้ผ่านหน้าต่างเดียว อาจมีโปรแกรมอื่นทำงานอยู่ข้างหลัง ถ้าคุณใช้ Codex CLI ให้ดูเอกสารทางการก่อนเปลี่ยนการตั้งค่าใดๆ
ดูได้ที่ไหนว่าเครื่องกำลังรันอะไรอยู่
Windows: ตัวจัดการงาน (Task Manager)
หน้าช่วยเหลือของ Microsoft อธิบายวิธีไว้ดังนี้ (เรายังไม่ได้ลองบน Windows)
- กด
Ctrl + Shift + Escหรือคลิกขวาที่ปุ่ม Start แล้วเลือก Task Manager (ภาษาไทยชื่อ "ตัวจัดการงาน") - แท็บ Processes แบ่งเป็น Apps, Background processes และ Windows processes พร้อมตัวเลข CPU แรม ดิสก์ และเครือข่ายของแต่ละตัว
- แท็บ Startup apps บอกว่าโปรแกรมไหนเปิดเองตอนเปิดเครื่อง
ให้ดูกลุ่ม Background processes ก่อน ส่วน Windows processes เป็นของระบบ ให้ปล่อยไว้
Mac: Activity Monitor (ตัวตรวจสอบกิจกรรม)
เปิด Finder เลือกโฟลเดอร์ แอปพลิเคชัน เข้าโฟลเดอร์ ยูทิลิตี้ แล้วเปิด Activity Monitor (ภาษาไทยชื่อ "ตัวตรวจสอบกิจกรรม" ตามไฟล์ภาษาของแอปบน macOS 26)
คู่มือของ Apple อธิบายวิธีใช้ไว้ดังนี้
- คลิกหัวคอลัมน์ เพื่อเรียงลำดับ เช่น เรียงตาม Memory (หน่วยความจำ) เพื่อดูว่าอะไรกินแรมมากที่สุด
- ช่องค้นหา พิมพ์ชื่อโปรแกรมเพื่อหา process ของโปรแกรมนั้น
- เมนู View เลือกดูเป็นกลุ่มได้ เช่น
- My Processes (ของบัญชีเรา)
- System Processes (ของ macOS)
- Windowed Processes (ตัวที่เปิดหน้าต่างได้ มักเป็นแอป)
- All Processes, Hierarchically (ดูว่าตัวไหนถูกตัวไหนเปิด)
วิธีที่เราแนะนำคือ เลือก My Processes แล้วเรียงตาม Memory ตัวที่อยู่บนๆ แต่ไม่มีหน้าต่างเปิดอยู่ คือตัวที่ควรรู้จัก
สำหรับคนใช้ terminal: หาว่าโปรแกรมไหนจอง port 3000 อยู่
ถ้าเปิดเซิร์ฟเวอร์ทดลองไม่ได้เพราะ port ถูกใช้อยู่ ให้ใช้คำสั่งนี้ดูว่าโปรแกรมไหนจองไว้ (เราลองบน macOS 26)
lsof -nP -iTCP:3000 -sTCP:LISTEN
เราลองเปิดเซิร์ฟเวอร์ทดลองแบบแยกตัว โดยให้โปรแกรมที่สั่งเปิดปิดตัวไปก่อน แล้วรันคำสั่งนี้ ได้ผลดังนี้ (เราเปลี่ยนชื่อผู้ใช้เป็น user และย่อคอลัมน์ DEVICE)
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 81743 user 12u IPv6 0x5675... 0t0 TCP *:3000 (LISTEN)
ผลนี้แปลว่า โปรแกรม node ที่มีเลขประจำตัว (PID) 81743 กำลังรอรับการเชื่อมต่อที่ port 3000 ถ้าอยากรู้ว่าเป็นคำสั่งอะไร และโปรแกรมไหนเป็นตัวเปิด ให้ใช้คำสั่งนี้
ps -o pid,ppid,command -p 81743
ได้ผลดังนี้
PID PPID COMMAND 81743 1 node server.js
PPID คือเลขของโปรแกรมที่เปิด process นี้ ในที่นี้เป็น 1 แปลว่าโปรแกรมที่สั่งเปิดได้ปิดไปแล้ว และระบบรับดูแลต่อ process นี้จึง ยังรันอยู่ทั้งที่ไม่มีหน้าต่างไหนเป็นเจ้าของ ตรงกับอาการ "ปิดหน้าต่างแล้วยังไม่หยุด"
ให้ใส่ -nP ไว้เสมอ ตอนที่เราลองโดยไม่ใส่ ช่อง NAME ขึ้นเป็น *:hbci (ชื่อเรียกของ port) แทน *:3000 ถ้าไม่มีโปรแกรมไหนจอง port นั้น คำสั่งจะไม่แสดงอะไรเลย เราลองคำสั่งนี้บน macOS เท่านั้น ยังไม่ได้ลองบน Linux และ Windows
ปิดโปรแกรมเบื้องหลังอย่างไรให้ปลอดภัย
กติกาข้อเดียวที่ต้องจำคือ ดูก่อน ถามก่อน แล้วค่อยปิด ถ้าไม่รู้จัก อย่าปิด
1. ถ้าไม่รู้จัก อย่าปิด ให้ค้นชื่อหรือถามก่อน
process ของระบบหลายตัวมีชื่อแปลกๆ ที่เราไม่เคยเห็น แต่ถ้าปิดไป เครื่องอาจค้าง ถ้าไม่แน่ใจ ให้ค้นชื่อในเว็บ หรือถาม AI (คำสั่งอยู่ข้างล่าง) อย่าเดาจากชื่อ
ตัวที่อยู่ในกลุ่ม Windows processes (Windows) หรือ System Processes (Mac) ไม่ต้องไปยุ่ง
2. ปิดจากตัวโปรแกรมเองก่อน
วิธีที่ปลอดภัยที่สุดคือให้โปรแกรมปิดตัวเอง
- แอปทั่วไป: เปิดแอปแล้วเลือก Quit (ออก) จากเมนู หรือจากไอคอนเล็กที่มุมจอ (แถบเมนูบน Mac หรือมุมขวาล่างของ Windows)
- เซิร์ฟเวอร์ทดลองที่ยังเห็นหน้าต่าง terminal: กลับไปที่หน้าต่างนั้นแล้วกด
Ctrl + C(เราลองส่งสัญญาณเดียวกันนี้ให้เซิร์ฟเวอร์ทดลอง เซิร์ฟเวอร์หยุดทันที และ port 3000 ว่าง) - โปรแกรมที่เครื่องมือ AI เปิดไว้: ถามเครื่องมือตัวนั้นว่าเปิดอะไรไว้บ้าง และวิธีหยุดที่ถูกต้องคืออะไร (คำสั่งอยู่ข้างล่าง) แล้วเทียบกับเอกสารทางการของเครื่องมือนั้น
3. ถ้าต้องปิดจาก Activity Monitor หรือ Task Manager ให้ลองแบบไม่บังคับก่อน
เลือก process ในรายการ แล้วกดปุ่มหยุดที่มุมซ้ายบนของหน้าต่าง Activity Monitor จะมีให้เลือก 2 แบบ ตามที่ Apple อธิบายไว้ในตารางนี้
| ปุ่ม | Apple อธิบายว่า | ใช้เมื่อ |
|---|---|---|
| Quit (ออก) | เหมือนสั่ง Quit จากในแอป ปิดเมื่อปลอดภัย ถ้าปิดแล้วข้อมูลจะหายหรือกระทบแอปอื่น มันจะไม่ปิด | ลองอันนี้ก่อนเสมอ |
| Force Quit (บังคับออก) | ปิดทันที ถ้าเปิดไฟล์ค้างอยู่ ข้อมูลอาจหาย ถ้าโปรแกรมอื่นใช้มันอยู่ โปรแกรมเหล่านั้นอาจมีปัญหา | เฉพาะตัวที่รู้จักแน่ และค้างจริง |
ก่อนบังคับปิด Apple แนะนำให้เปิดเมนู View แล้วเลือก All Processes, Hierarchically เพื่อดูว่ามีโปรแกรมอื่นใช้ process นั้นอยู่หรือไม่
บน Windows ปุ่มที่ใช้คือ End Task ซึ่ง Microsoft บอกว่าใช้ปิด process ที่ไม่ตอบสนองหรือกินทรัพยากรมาก ให้ใช้เฉพาะกับตัวที่รู้จักแน่ๆ และเซฟงานที่เปิดอยู่ก่อนเสมอ (เรายังไม่ได้ลองบน Windows)
สิ่งที่เราตั้งใจไม่สอน: คำสั่งบังคับปิดทาง terminal และการลบไฟล์ของโปรแกรมด้วยมือ เพราะถ้าใช้ผิดตัวเดียว งานอาจหายหรือเครื่องมีปัญหา ถ้าเจอคำแนะนำแบบนี้จากอินเทอร์เน็ตหรือจาก AI ให้ถามก่อนว่าคำสั่งนั้นปิดหรือลบอะไร และมีวิธีที่ไม่ต้องบังคับปิดหรือไม่
ลองทำแบบนี้: คำสั่งสำเร็จรูป 2 แบบให้ AI ช่วย
คำสั่งเมื่อเจอชื่อ process ที่ไม่รู้จัก
ถาม AI ด้วยคำสั่งนี้ แล้วเติมข้อมูลในวงเล็บเหลี่ยมจากสิ่งที่เห็นในเครื่อง
ในเครื่อง [Mac / Windows] ของฉัน มี process ชื่อ "[ชื่อที่เห็น]" ใช้แรมประมาณ [ตัวเลข] อยู่ในกลุ่ม [กลุ่มที่เห็น เช่น My Processes / Background processes] 1. ชื่อนี้มักเป็นของโปรแกรมหรือบริษัทอะไร ถ้าไม่แน่ใจให้บอกว่าไม่แน่ใจ ห้ามเดา 2. เป็นส่วนของระบบปฏิบัติการไหม ปิดแล้วจะกระทบอะไร 3. ถ้าไม่จำเป็น ให้บอกวิธีปิดหรือปิดการเปิดเองตอนเปิดเครื่อง จากตัวโปรแกรมที่เป็นเจ้าของ ห้ามแนะนำให้บังคับปิด process ของระบบ หรือลบไฟล์ระบบ
แต่ละส่วนของคำสั่งช่วยอะไร
- การบอกระบบและกลุ่ม ช่วยให้ AI แยกของระบบออกจากแอป
- "ไม่แน่ใจให้บอก" ช่วยลดการเดา
- ข้อ 3 ให้ปิดจากต้นทาง ไม่ใช่ปิดแล้วโปรแกรมกลับมาใหม่
- บรรทัดสุดท้ายป้องกันคำแนะนำที่ทำให้เครื่องพัง
ข้อจำกัดคือ AI ตอบจากชื่ออย่างเดียว ชื่อซ้ำกันได้ และ AI จำผิดได้ เรื่องสำคัญให้เช็กกับเว็บทางการของโปรแกรมนั้น และไม่ต้องวางรหัสผ่านหรือข้อมูลลับ
คำสั่งก่อนปิดงานกับเครื่องมือ AI เขียนโค้ด
พิมพ์คำสั่งนี้ในเครื่องมือตัวนั้นก่อนปิดหน้าต่าง
ก่อนจบงาน ช่วยบอกว่าตอนนี้มีโปรแกรมอะไรที่คุณเปิดไว้เบื้องหลังบ้าง (เช่น เซิร์ฟเวอร์ทดลอง ตัวดูไฟล์) แต่ละตัวใช้ port อะไร และวิธีหยุดที่ถูกต้องคืออะไร ยังไม่ต้องปิด ให้ฉันดูรายการก่อน
"ยังไม่ต้องปิด" ทำให้เราเห็นรายการก่อนตัดสินใจ เรายังไม่ได้ลอง 2 คำสั่งนี้กับ AI ตัวใด ถ้าเครื่องมือตอบไม่ได้ ให้ไปดูใน Activity Monitor หรือ Task Manager เอง
เช็กลิสต์ 1 นาที หลังให้ AI ทำงานบนเครื่อง
- ถามเครื่องมือ AI ว่าเปิดอะไรไว้เบื้องหลัง ก่อนปิดหน้าต่าง
- เปิด Activity Monitor หรือ Task Manager ดูว่ามีอะไรกินแรมมากผิดปกติไหม
- ตัวที่รู้จักและไม่ได้ใช้แล้ว ให้ปิดจากตัวโปรแกรมเองก่อน
- ตัวที่ไม่รู้จัก ให้ค้นหรือถามก่อน อย่าปิด
สรุป
process คือโปรแกรมที่กำลังทำงาน บางตัวไม่มีหน้าต่าง และยังรันต่อหลังเราปิดหน้าต่างไปแล้ว ดูได้ที่ Task Manager บน Windows หรือ Activity Monitor บน Mac กติกาคือ ดูก่อน ถามก่อน ปิดจากตัวโปรแกรมเองก่อน และตัวที่ไม่รู้จัก อย่าปิด
ทุกตอนในซีรีส์ "เขียนโปรแกรมพื้นฐาน" มีเป้าหมายเดียวกัน คือ อ่านและตรวจงานที่ AI ทำบนเครื่องคุณได้เอง ตอนถัดไปเราจะดูไฟล์ .env ไฟล์ที่ AI มักบอกให้สร้างตอนทำเว็บหรือแอป ว่าคืออะไร และทำไมต้องเก็บให้ดี อ่านต่อได้ที่ ไฟล์ .env คืออะไร ถ้าอยากเริ่มใช้เครื่องมือ AI เขียนโค้ด อ่านต่อได้ที่ 15 คำสั่งของ Claude Code ที่คุณต้องรู้
อาทิตย์ละสกิล เดี๋ยวก็เก่ง