วัน: 11 พฤศจิกายน 2012

MacOs: รันงานข้ามคืนด้วย CaffeinateMacOs: รันงานข้ามคืนด้วย Caffeinate

Caffeinate เป็นคำสั่งลับสุดเท่ (และมีประโยชน์มาก) ที่ซ่อนอยู่ใน Terminal ของ macOS หน้าที่ของมันตรงตามชื่อเลยครับ คือการ “ป้อนคาเฟอีน” ให้ Mac ของคุณตื่นอยู่ตลอดเวลา ไม่ยอมให้เครื่องหลับ (Sleep) หน้าจอดับ หรือพักเครื่องในขณะที่คุณกำลังทำงานสำคัญอยู่

ถ้าคุณเคยเจอปัญหาปล่อยให้เครื่องโหลดไฟล์ใหญ่ ๆ ทิ้งไว้ หรือกำลังเรนเดอร์วิดีโอแล้วหันไปกินข้าว กลับมาอีกทีปรากฏว่า Mac หลับปุ๋ย งานหยุดชะงัก… คำสั่ง caffeinate คือฮีโร่ที่จะมาช่วยคุณ โดยไม่ต้องลงแอปเสริม (เช่น Amphetamine หรือ Caffeine) ให้หนักเครื่องเลยครับ


วิธีเปิดใช้งาน Caffeinate (ขั้นพื้นฐาน)

วิธีใช้คำสั่งนี้ง่ายมาก เพียงแค่เปิด Terminal ขึ้นมา (กด Command + Spacebar พิมพ์ Terminal แล้วกด Enter) จากนั้นเลือกใช้ตามสถานการณ์ได้เลยครับ


สั่งให้ Mac ตื่นไปเรื่อย ๆ ไม่มีกำหนด

พิมพ์คำสั่งด้านล่างนี้แล้วกด Enter
caffeinate

  • ผลลัพธ์: ตราบใดที่หน้าต่าง Terminal นี้ยังเปิดอยู่ Mac จะไม่มีวันหลับ
  • วิธีพอก่อน: ถ้าอยากให้มันกลับไปหลับได้ตามปกติ ให้กดปุ่ม Control + C บนคีย์บอร์ดเพื่อหยุดคำสั่ง

เจาะลึก 7 Options (Flags) อาวุธลับของ Caffeinate

คำสั่ง caffeinate มี Options เสริมที่เราสามารถหยิบมาผสมผสานเพื่อให้ตรงกับความต้องการได้แบบละเอียดสุด ๆ ดังนี้ครับ

กลุ่มคำสั่งควบคุมฮาร์ดแวร์ (Assertions)

  • -d (Display): สั่งห้ามหน้าจอดับ (Prevent display sleep) เหมาะสำหรับตอนเปิดแดชบอร์ดทิ้งไว้ดูข้ามคืน
  • -i (Idle): สั่งห้ามระบบเข้าสู่โหมดหลับเมื่อไม่มีการเคลื่อนไหว (Prevent system idle sleep) คือตัวเครื่องไม่หลับ แต่หน้าจอยังดับเพื่อเซฟไฟได้
  • -m (Disk): สั่งห้ามฮาร์ดดิสก์หยุดทำงาน (Prevent disk idle sleep) เหมาะมากเวลา Copy ไฟล์ใหญ่ ๆ หรือดาวน์โหลดงาน
  • -s (System Power): สั่งห้ามเครื่องหลับ เฉพาะตอนที่เสียบปลั๊ก (AC Power) อยู่เท่านั้น ถ้าถอดปลั๊กเมื่อไหร่คำสั่งนี้จะหมดฤทธิ์ทันทีเพื่อเซฟแบตเตอรี่

คำสั่งจำลองพฤติกรรมผู้ใช้ และจำกัดเวลา

-u (User Active): คำสั่งแกล้งทำเป็นว่า “ฉันยังนั่งอยู่หน้าจอตรงนี้ซินะ!”

  • ความเจ๋งคือ: ถ้าหน้าจอคุณดับไปแล้ว การใช้ caffeinate -u จะเป็นการปลุกหน้าจอให้สว่างขึ้นมาทันที และห้ามมันดับ
  • ข้อควรระวัง: ถ้าไม่ใส่เวลาถอยหลังร่วมด้วย คำสั่งนี้จะมีฤทธิ์สั้น ๆ เพียง 5 วินาที แล้วก็ดับไปตามปกติ

-t (Timeout): หากคุณรู้ว่างานจะเสร็จในอีก 1 ชั่วโมง และไม่อยากเปิดทิ้งไว้ข้ามคืน ให้ใส่ฟังก์ชัน -t (Time) ตามด้วย จำนวนวินาที ครับ เช่น
caffeinate -t 3600
(3600 วินาที = 1 ชั่วโมงพอดี พอครบเวลาปุ๊บ คาเฟอีนหมดฤทธิ์ Mac ก็จะกลับไปโหมดประหยัดพลังงานตามปกติ)


คำสั่งผูกมัดกับแอปพลิเคชันอื่น

-w (Wait Process): สั่งให้ Mac ตื่นอยู่ตลอดเวลา ตราบใดที่แอปพลิเคชันหรือโปรเซสที่ระบุยังทำงานอยู่ โดยเราต้องใส่เลข PID (Process ID) ของแอปนั้น ๆ ต่อท้าย เช่น
caffeinate -w 1234
(เมื่อแอปเลข PID 1234 ปิดตัวลง คาเฟอีนจะถูกถอนทันที และ Mac จะยอมหลับได้ตามปกติ โดยคุณสามารถเช็กเลข PID ได้จากแอป Activity Monitor)


ตารางสรุป Options ทั้งหมดเพื่อความชัดเจน

Optionหน้าที่หลักสถานการณ์ที่ควรใช้
-dห้ามหน้าจอดับเปิดดู Live สด, ดูหน้าจอ Monitor
-iห้ามระบบหลักหลับ (แต่จอดับได้)เปิดบอทเกม, รันโค้ดเบื้องหลัง
-mห้ามฮาร์ดดิสก์หยุดทำงานคัดลอกไฟล์ขนาดใหญ่, ย้ายข้อมูล
-sห้ามหลับเฉพาะตอนเสียบปลั๊กป้องกันแบตหมดเกลี้ยงในกระเป๋าเป้
-uปลุกหน้าจอให้สว่าง + แกล้งทำว่าใช้งานอยู่สั่งงานจากระยะไกล (Remote) เพื่อเปิดจอ
-t [วินาที]ตั้งเวลาหมดฤทธิ์สั่งรันงานทิ้งไว้ก่อนออกไปข้างนอก
-w [PID]ผูกอายุการตื่นไว้กับโปรแกรมอื่นสั่งให้เครื่องตื่นจนกว่าจะเรนเดอร์งานเสร็จ

เทคนิคขั้นโปร: ผสมคำสั่งเพื่อผลลัพธ์ที่ดีที่สุด

คุณสามารถนำ Options เหล่านี้มารวมร่างกันได้ในคำสั่งเดียวครับ เช่น

อยากให้หน้าจอเปิดสว่าง และห้ามเครื่องหลับ เป็นเวลา 30 นาที

caffeinate -di -t 1800

อยากปลุกหน้าจอที่ดับอยู่ให้สว่างขึ้นมา และให้มันสว่างค้างไว้ 10 นาที

caffeinate -u -t 600

รันโปรแกรมไปพร้อมกับสั่งกินกาแฟไปในตัว

ถ้าคุณขี้เกียจหาเลข PID คุณสามารถสั่งรันโปรแกรมต่อท้าย caffeinate ตรง ๆ ได้เลย เช่น สั่งบีบอัดไฟล์และห้ามเครื่องหลับจนกว่าจะเสร็จ
caffeinate -i zip -r backup.zip /Users/Documents


สรุป

คำสั่ง caffeinate เป็นเครื่องมือ Built-in ที่ทรงพลัง ปลอดภัย และมีติดมาให้ใน macOS ทุกเครื่องโดยไม่ต้องเสียเวลาไปดาวน์โหลดแอปพลิเคชันภายนอกให้หนักเครื่อง เหมาะอย่างยิ่งสำหรับสาย Dev, สายตัดต่อ หรือใครก็ตามที่อยากควบคุมพฤติกรรมการนอนของ Mac อย่างแม่นยำ ลองเอาไปปรับใช้ใน Workflow ของตัวเองดูนะครับ!


อ่านเพิ่มเติม