macOS: Cron ตั้งเวลาทำงานใน mac โดย root

Byphunsanit

macOS: Cron ตั้งเวลาทำงานใน mac โดย root

แต่ละ OS จะมีระบบตั้งเวลาในการทำงานอัตโนมัติ ใน Windows มี Task Scheduler, ใน linux มี Cron ส่วนใน macOS จะมี Cron และ launchd โดยการใช้ Cron job (วิธีดั้งเดิมแต่ใช้ใน linux ได้ด้วย) ทำให้การ dev บน mac แล้วใช้ linux server ในการทำงานจริง ๆ ได้ Cron ใน macOS เหมือน Linux ทั่วไป สามารถใช้คำสั่งเดิมๆ ได้เลย

  • วิธีใช้งาน: พิมพ์
    crontab -e
    ใน Terminal เพื่อแก้ไขตารางงาน
    โดยสามารถทำตาม Linux: Cron Job ล้างขยะ clear cache อัตโนมัติ
  • ข้อจำกัด: บน macOS เวอร์ชั่นใหม่ๆ (Catalina ขึ้นไป) Cron อาจจะเจอปัญหาเรื่องสิทธิ์การเข้าถึงไฟล์ (Full Disk Access) ทำให้รันสคริปต์บางอย่างไม่ได้ถ้าไม่ไปตั้งค่าใน System Settings ก่อน

แก้ได้โดย

  1. เปิด System Settings (การตั้งค่าระบบ) > Privacy & Security (ความเป็นส่วนตัวและความปลอดภัย)
  2. ไปที่แท็บ Privacy และเลือก Full Disk Access
  3. คลิกที่รูปกุญแจด้านล่างซ้ายและใส่รหัสผ่าน (ถ้าถูกล็อกอยู่)
  4. กด Command + Shift + G ใน Finder (หรือไปที่ Applications > Utilities > Terminal แล้วใช้คำสั่ง
    open /usr/sbin/cron
    เพื่อหาไฟล์ cron
  5. ลากไฟล์ /usr/sbin/cron จาก Finder ไปวางในรายการของ Full Disk Access
  6. ลองรันสคริปต์อีกครั้ง

การตั้งค่านี้ช่วยให้ cron (ซึ่งทำงานภายใต้สิทธิ์ของ root) มีสิทธิ์ในการเข้าถึงข้อมูลส่วนตัวและระบบต่างๆ ได้เหมือนกับแอปพลิเคชันที่ถูกอนุญาตให้เข้าถึงได้โดยผู้ใช้โดยตรงครับ

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

About the author

phunsanit administrator