Part 5 · ห้องควบคุม Terminal, tmux และ maw

บทที่ 41: ห้องทำงานที่อยู่ต่อได้แม้เราปิดหน้าต่างดู (tmux)

บทสั้นสำหรับมือใหม่ใน Part 5: ห้องควบคุม Terminal, tmux และ maw

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

สามเรื่องที่ควรจำ

  1. tmux เป็นโครงพื้นฐานของห้อง Terminal ส่วนผู้ช่วยที่คิดและทำงานเรียกว่า Agent

    ประเด็นจากหัวข้อ “สามเรื่องที่ควรจำ”

  2. detach ต่างจาก exit และคำสั่งปิด

    ประเด็นจากหัวข้อ “สามเรื่องที่ควรจำ”

  3. งานข้ามคืนต้องมีรายงานความมีชีวิตและผู้ตรวจตอนเช้า

    ประเด็นจากหัวข้อ “สามเรื่องที่ควรจำ”

สรุปแก่นของบทที่ 41 เป็นจุดสังเกตที่กลับมาทบทวนได้รวดเร็ว

สถานการณ์ใกล้ตัว

ลองนึกว่าผู้ช่วยกำลังจัดหมวดเอกสาร 200 รายการอยู่ในห้องทำงานหนึ่งห้อง หน้าต่าง Terminal ที่เราเปิดเห็น ไม่ใช่ตัวห้องนั้น มันเหมือนหน้าต่างกระจกที่เราใช้มองเข้าไปว่าในห้องกำลังเกิดอะไรขึ้น

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

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

ผลลัพธ์ของบทนี้

คุณจะอธิบายได้ว่า tmux ช่วยให้ห้องทำงานหลายห้องอยู่ต่อแม้เราปิดหน้าต่าง Terminal ที่ใช้ดู และแยกการ “เลิกมอง” ออกจากการ “สั่งให้งานหยุด” ได้

ศัพท์ใหม่ในบทนี้

  1. โปรแกรมจัดหน้าต่างงาน (tmux): โปรแกรมจัดพื้นที่ Terminal หลายชุดและเก็บงานให้ทำต่อได้
  2. การแยกออกจากหน้าจอ (detach): ออกจากมุมมองโดยไม่ตั้งใจหยุดงานข้างใน
  3. การกลับเข้าไปดู (attach): กลับไปเชื่อมกับพื้นที่ tmux ที่ยังทำงานอยู่
  4. งานที่โปรแกรมกำลังทำอยู่ (process): งานของโปรแกรมที่ยังเดินอยู่ภายในห้อง

ภาพเปรียบเทียบ

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

  • detach คือเดินออกจากอาคารโดยไม่ปิดไฟ
  • attach คือใช้บัตรกลับเข้ามาดู
  • exit หรือคำสั่งปิดระดับต่าง ๆ อาจเหมือนบอกคนในห้องให้เลิกงาน
  • kill เหมือนตัดไฟห้องทันที

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

แก่นของเรื่อง

tmux แก้ปัญหาสองอย่าง:

  1. งานไม่ผูกกับหน้าต่างที่เรากำลังมอง: ปิดหน้าต่างดูแล้ว ห้องยังอยู่ได้
  2. แยกงานหลายชุดไม่ให้ปะปน: แต่ละงานอยู่คนละห้องภายใต้อาคารเดียว

แต่ tmux ไม่ใช่ผู้ช่วยคิดงาน มันไม่รู้เป้าหมายธุรกิจ และไม่ตัดสินว่าบ้านผู้เชี่ยวชาญใดควรรับงาน มันมีหน้าที่ดูแลห้องทำงานเท่านั้น ส่วน maw ช่วยให้เราดูและติดต่อหลายห้องได้ง่ายขึ้น

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

ตัวอย่างจำลองตามกระบวนการ Oracle V4

Jan ส่งงานจำลองให้บ้านผู้เชี่ยวชาญ (House) ทำดัชนีเอกสาร บ้านเริ่มงานใน tmux โดยเครื่องยังเปิดอยู่ แล้วเจ้าของปิดเฉพาะหน้าต่าง Terminal ที่ใช้ดู เมื่อกลับมา เขาไม่ควรเปิดงานซ้ำทันที เพราะอาจทำให้เกิดงานสองชุด เขาควรดูรายการห้องงาน (session) และสถานะก่อน จากนั้นตรวจรายงานว่ามีความคืบหน้าหรือไม่

หากงานต้องทำข้ามคืน ผู้รับผิดชอบควรกำหนดว่าจะรายงานความคืบหน้า (PROGRESS) ติดขัด (STUCK) หรือทำเสร็จ (DONE) เมื่อใด ความต่อเนื่องของหน้าต่างไม่แทนความต่อเนื่องของการสื่อสาร

หยุดก่อน

เมื่อหน้าต่างหายหรือเงียบ คุณมีหลักฐานอะไรนอกจากภาพหน้าจอที่จะบอกว่างานยังเดิน รอ หรือจบแล้ว

ลองทำอย่างปลอดภัย

🟢 ภารกิจ: วาดอาคารหนึ่งหลัง

วาดอาคารชื่อ demo-oracle แล้วเขียนห้องจำลองสามห้อง: Jan, House-A และ House-B ใต้ภาพเขียนว่า “ออกจากมุมมอง” กับ “หยุดงาน” ต่างกันอย่างไร

ก่อนเริ่ม: ใช้กระดาษหรือกระดาน ไม่เปิด tmux
ผลที่คาด: ได้ภาพที่แสดงว่าออกจากจอไม่ได้แปลว่าทุกห้องหยุด
หยุดเมื่อ: เริ่มใช้คำว่า “ปิด” โดยไม่ระบุว่าปิดมุมมองหรือปิด process
กู้คืน: เปลี่ยนคำเป็น detach, attach, หยุดอย่างสุภาพ หรือหยุดทันทีให้ชัด

ระวังความเข้าใจผิด

ความเข้าใจผิด: “tmux คือที่เก็บไฟล์”
สิ่งที่แม่นกว่า: tmux เก็บสภาพพื้นที่ Terminal และ process ไว้ ส่วนไฟล์และรายงานต้องถูกบันทึกในระบบไฟล์

ความเข้าใจผิด: “detach ทำให้งานเสร็จเอง”
สิ่งที่แม่นกว่า: มันเพียงปล่อยให้งานที่เริ่มแล้วมีโอกาสทำต่อ ต้องมีการติดตามและตรวจผล

สามเรื่องที่ควรจำ

  1. tmux เป็นโครงพื้นฐานของห้อง Terminal ส่วนผู้ช่วยที่คิดและทำงานเรียกว่า Agent
  2. detach ต่างจาก exit และคำสั่งปิด
  3. งานข้ามคืนต้องมีรายงานความมีชีวิตและผู้ตรวจตอนเช้า

คำถามชวนคิด

หากหน้าต่างเงียบเป็นเวลา 20 นาที คุณต้องเห็นหลักฐานอะไรบ้างก่อนสรุปว่างานค้าง

สะพานไปบทถัดไป

เราเห็นอาคารแล้ว บทถัดไปจะติดป้ายแต่ละชั้นให้ชัดว่า session, window และ pane อยู่ตรงไหน


ค้นทั้งเล่ม

อยากรู้เรื่องอะไร

พิมพ์อย่างน้อย 2 ตัวอักษร