macOs มีวิธีในการตั้งเวลาให้ทำงานอัตโนมัติเหมือน os อื่น ๆ อย่าง windows ที่มี Windows Task Scheduler, linux มี Cron ที่ช่วยในการทำงานอัตโนมัติ Task Automation
Launchd (วิธีมาตรฐานของ macOS)
Apple แนะนำให้ใช้ launchd แทน Cron เพราะมีความฉลาดกว่ามาก โดยจะทำงานผ่านไฟล์คอนฟิกที่เรียกว่า Property List (.plist)
- ข้อดี: สามารถตั้งให้รันเมื่องานค้างอยู่ (เช่น ปิดเครื่องไปตอนที่ควรจะรัน พอเปิดเครื่องมามันจะรันให้ทันที), รันเมื่อเสียบ USB, หรือรันเมื่อมีการแก้ไขไฟล์
- ที่เก็บไฟล์:
~/Library/LaunchAgents (สำหรับ User ปัจจุบัน)
Cron (แบบดั้งเดิม)
macOS ยังคงรองรับ Cron เหมือน Linux ทั่วไป คุณสามารถใช้คำสั่งเดิมๆ ได้เลยครับ
- วิธีใช้งาน: พิมพ์
crontab -e ใน Terminal เพื่อแก้ไขตารางงาน
- ข้อจำกัด: บน macOS เวอร์ชั่นใหม่ๆ (Catalina ขึ้นไป) Cron อาจจะเจอปัญหาเรื่องสิทธิ์การเข้าถึงไฟล์ (Full Disk Access) ทำให้รันสคริปต์บางอย่างไม่ได้ถ้าไม่ไปตั้งค่าใน System Settings ก่อน
Shortcuts App (ทางเลือกสาย GUI)
สำหรับสายที่ไม่ถนัดเขียน Code หรือ XML ใน macOS มีแอป Shortcuts (คำสั่งลัด) มาให้ในเครื่อง
- Automation: คุณสามารถตั้งค่า “Automation” ให้รันสคริปต์ (Shell Script / AppleScript) ตามเวลาที่กำหนด หรือตามเงื่อนไขต่างๆ ได้ง่ายๆ ผ่านหน้าจอหลักครับ
| ฟีเจอร์ | Cron | Launchd | Shortcuts |
|---|
| ความยาก | ง่าย (ตระกูล Unix) | ปานกลาง (XML) | ง่ายมาก (ลากวาง) |
| ความฉลาด | รันตามเวลาเป๊ะๆ เท่านั้น | รันย้อนหลังได้ถ้าพลาดไป | เน้นการทำงานร่วมกับแอป |
| การรองรับ | Deprecated (แต่ยังใช้ได้) | Native (แนะนำโดย Apple) | มาตรฐาน User ทั่วไป |
อ่านเพิ่มเติม