สถานการณ์ใกล้ตัว
เจ้าของธุรกิจเห็นคำว่า “kill” ในคู่มือและคิดว่าเป็นเพียงปิดหน้าต่าง แต่ในระบบทำงานจริง คำนี้อาจหยุดกระบวนการทำงาน (process) ที่กำลังสร้างรายงาน หลายนาทีที่ประหยัดจากการกดเร็วอาจกลายเป็นหลายชั่วโมงของงานที่ต้องเริ่มใหม่
ปัญหาไม่ใช่คนจำศัพท์อังกฤษไม่ได้ ปัญหาคือหน้าต่าง Terminal มักแสดงคำสั่งทุกชนิดด้วยตัวอักษรแบบเดียวกัน คำสั่งถามรุ่นกับคำสั่งหยุดทั้งระบบจึงดูคล้ายกัน ทั้งที่ผลกระทบต่างกันมาก
ผลลัพธ์ของบทนี้
คุณจะจัดคำสั่งและการกระทำเป็นสี่ระดับความเสี่ยง พร้อมกำหนดสิ่งที่ต้องตรวจ ผลที่คาด เงื่อนไขที่ต้องหยุดถามคน และวิธีกู้คืนก่อนแตะระบบ
ศัพท์ใหม่ในบทนี้
- อ่านอย่างเดียว (read-only): ดูข้อมูลโดยตั้งใจไม่เปลี่ยนไฟล์ ข้อความ หรือสถานะงาน
- ผลข้างเคียง (side effect): สิ่งที่เปลี่ยนหลังคำสั่ง เช่น ส่งข้อความ สร้างไฟล์ หรือหยุดงาน
- ย้อนกลับได้ (reversible): มีวิธีคืนสภาพเดิมที่เข้าใจและทดสอบได้
- จุดที่ต้องให้คนอนุมัติ (human gate): จุดที่ต้องให้ผู้รับผิดชอบตัดสินใจก่อนทำ
- เงื่อนไขหยุด (stop condition): เหตุการณ์ที่พบแล้วต้องไม่เดินต่อ
ภาพเปรียบเทียบ
ให้นึกถึงบันไดสี่ขั้นในอาคาร:
- เขียว: เดินดูป้ายหน้าห้อง
- เหลือง: มองผ่านกระจกซึ่งอาจเห็นข้อมูลส่วนตัว
- ส้ม: เคาะประตูหรือส่งเอกสารเข้าไป งานของคนข้างในอาจเปลี่ยน
- แดง: ปิดไฟ ย้ายห้อง หรือถอดกุญแจ ต้องมีเจ้าของอาคารอนุมัติ
สีไม่ได้บอกว่าคำสั่งดีหรือเลว มันบอกว่าต้องเตรียมความระมัดระวังระดับใด
แก่นของเรื่อง
ระดับเขียว: ตรวจรุ่นและคู่มือ
ตัวอย่างคือการดู --version, --help หรือรายการทั่วไป ไม่ควรเปลี่ยนงาน แต่ผลลัพธ์ยังอาจมีพาธ ชื่อระบบ หรือข้อมูลสภาพแวดล้อม จึงไม่ควรถ่ายภาพเผยแพร่โดยไม่ตรวจ
ระดับเหลือง: อ่านสถานะและผลลัพธ์
การดูรายชื่อ session สุขภาพระบบ หรือข้อความล่าสุดยังไม่ส่งงานใหม่ อย่างไรก็ตาม การดูนี้อาจเปิดเผยชื่อโครงการ ข้อความในช่องย่อย (pane) หรือข้อมูลภายในได้ ห้ามคัดลอกข้อความย้อนหลัง (scrollback) จริงลงหนังสือ แชต หรือคอร์ส
ระดับส้ม: ส่ง ปลุก แนบ หรือเขียน
การส่งข้อความเข้า Jan การฝากกล่องรับ การปลุก House การสร้างไฟล์ หรือยอมรับ diff เปลี่ยนสถานะภายนอก ต้องตรวจเป้าหมาย เนื้อหา เจ้าของ และเวลาที่เหมาะสม
ระดับแดง: ปิด ลบ ย้าย หรือเผยแพร่
การหยุด session ลบไฟล์ ย้ายข้อมูล เปลี่ยนฐานข้อมูล นำขึ้นระบบจริง (deploy) หรือเผยแพร่ (publish) ต้องมีการอนุมัติ แผนย้อนกลับ และหลักฐานว่างานค้างถูกเก็บแล้ว บททดลองใน Part นี้จะไม่ทำระดับส้มและแดง
ก่อนใช้คำสั่ง ให้เติมการ์ดห้าช่อง:
| ช่อง | คำถาม |
|---|---|
| เป้าหมาย | ฉันกำลังถามหรือเปลี่ยนอะไร |
| ก่อนเริ่ม | ตำแหน่ง รุ่น เป้าหมาย และสิทธิ์ถูกต้องไหม |
| ผลที่คาด | ถ้าสำเร็จจะเห็นอะไร |
| หยุดเมื่อ | สัญญาณใดบอกว่าไม่ควรเดินต่อ |
| กู้คืน | ถ้าผลไม่ตรง จะถอยอย่างไรโดยไม่เดา |
ตัวอย่างจำลองตามกระบวนการ Oracle V4
ทีมต้องการรู้ว่า Jan ยังอยู่ในรายชื่อหรือไม่ การดูรายการสถานะเป็นระดับเหลือง แต่การส่งคำว่า “เริ่มทำทันที” เข้า pane เป็นระดับส้ม แม้ข้อความจะสั้นกว่า คำสั่งหลังเปลี่ยนงานของผู้รับ จึงต้องมี brief และคนอนุมัติ
อีกกรณีหนึ่ง เจ้าของเห็น House เงียบ เขาไม่ควรสรุปว่า House หยุดและสั่งปิด เพราะความเงียบอาจหมายถึงกำลังคิด กำลังรอ หรือไม่มีข้อความใหม่ ต้องใช้หลายหลักฐานก่อนสรุป
หยุดก่อน
การกระทำที่คุณกำลังนึกถึงเป็นการอ่าน การส่ง หรือการหยุด และถ้าจัดระดับไม่ได้ คุณพร้อมวางไว้ในกอง “ยังไม่ทราบ” หรือยัง
ลองทำอย่างปลอดภัย
🟢 ภารกิจบนกระดาษ: จัดสีการกระทำ
จัดสีให้หกการกระทำจำลอง: ดูรุ่น, ดูรายชื่อ, อ่านข้อความล่าสุด, ส่ง brief, ปลุก House, ปิด session แล้วเขียนเหตุผลหนึ่งบรรทัดต่อใบ
ก่อนเริ่ม: ทำบนกระดาษ ไม่เปิด Terminal
ผลที่คาด: ได้การ์ดเขียวอย่างน้อยหนึ่งใบ เหลืองหนึ่งใบ ส้มหนึ่งใบ และแดงหนึ่งใบ
หยุดเมื่อ: ไม่รู้ว่าการกระทำนั้นมีผลข้างเคียงหรือไม่
กู้คืน: ย้ายใบนั้นไปกอง “ยังไม่ทราบ” และตรวจ --help หรือถามผู้ดูแลก่อน
ระวังความเข้าใจผิด
ความเข้าใจผิด: “อ่านอย่างเดียวแปลว่าปลอดภัยทุกมิติ”
สิ่งที่แม่นกว่า: อาจไม่เปลี่ยนระบบ แต่ยังเปิดเผยข้อมูลลับหรือทำให้สรุปสถานะผิดได้
ความเข้าใจผิด: “ย้อนกลับได้จึงไม่ต้องขออนุมัติ”
สิ่งที่แม่นกว่า: การย้อนกลับมีต้นทุนและอาจไม่สมบูรณ์ ผู้รับผิดชอบยังต้องเห็นผลกระทบก่อน
สามเรื่องที่ควรจำ
- ดูผลข้างเคียง ไม่ดูเพียงความยาวของคำสั่ง
- สิ่งที่ยังไม่รู้ให้ติดป้าย ไม่เดา
- แบบฝึกมือใหม่ควรจบที่เขียวหรือเหลือง
คำถามชวนคิด
คุณมีคำสั่งหรือปุ่มใดที่เคยคิดว่า “แค่ดู” แต่ภายหลังพบว่ามันเปลี่ยนงานจริง
สะพานไปบทถัดไป
เมื่อมีบันไดความเสี่ยงแล้ว เราพร้อมเข้าใจว่า tmux เก็บห้องทำงานหลายห้องไว้ได้อย่างไร โดยไม่ต้องเข้าไปแตะทุกห้อง