พิเศษ! เพียงใช้โค้ด freehosting1y รับฟรีโฮสติ้ง 1 ปี เฉพาะออเดอร์ที่มียอดซื้อตั้งแต่ 25,000 บาทขึ้นไปที่มีโฮสติ้ง

วิธีใช้ cron/anacron ทำงานรายวัน รายสัปดาห์ รายเดือน อัตโนมัติ

  • 0:35 min

  • 0 comments

แม้ว่า systemd timers จะมีความทันสมัย แต่ cron และ anacron ยังคงเป็นมาตรฐานที่ติดตั้งมาพร้อมกับ Linux ทุกเครื่อง และมีความเรียบง่ายในการใช้งานสูงมาก บทความนี้จะเจาะลึกวิธีตั้งค่าให้งานทำงานอัตโนมัติด้วยเครื่องมือดั้งเดิมเหล่านี้ครับ


1. ปัญหาของ Cron แบบมาตรฐาน

cron ถูกออกแบบมาให้รันงานตามเวลาที่กำหนดเป๊ะๆ (Time-based job scheduler) แต่มีจุดอ่อนสำคัญคือ:
* ถ้าเครื่องปิด งานก็พลาด: หากกำหนดให้รันงานตอนตี 3 แต่คุณปิดคอมพิวเตอร์ไว้ งานนั้นจะไม่รันเลยจนกว่าจะถึงรอบถัดไป
* ไม่เหมาะกับ Desktop/Laptop: คอมพิวเตอร์ส่วนบุคคลมักไม่ได้เปิดทิ้งไว้ 24/7 ทำให้งานที่ตั้งไว้ใน crontab มักถูกข้ามไป

วิธีแก้: เราจึงต้องใช้ anacron เข้ามาช่วย ซึ่งถูกออกแบบมาให้รันงานที่ “พลาดไป” ทันทีที่เปิดเครื่องครับ


2. ขั้นตอนการตั้งค่า

วิธีที่ 1: ใช้ Cron (สำหรับงานที่ต้องรันตรงเวลา)

พิมพ์คำสั่งเพื่อแก้ไขตารางงานของคุณ:
bash
crontab -e

ในไฟล์นี้ ให้ใส่บรรทัดคำสั่งตามรูปแบบ: นาที ชั่วโมง วันที่ เดือน วันในสัปดาห์ คำสั่ง

วิธีที่ 2: ใช้ Anacron (สำหรับงานที่พลาดไม่ได้)

ระบบ Linux (เช่น Ubuntu/Debian) จะมีโฟลเดอร์สำหรับงานอัตโนมัติอยู่แล้วใน /etc/
* /etc/cron.daily/
* /etc/cron.weekly/
* /etc/cron.monthly/

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


3. ตัวอย่างการตั้งค่า

ตัวอย่างใช้ Cron (รันสคริปต์สำรองข้อมูล)

“`bash

รันทุกวัน ตอนตี 3

0 3 * * * /home/user/backup.sh

รันทุกวันจันทร์ ตอน 8 โมงเช้า

0 8 * * 1 /home/user/weekly_report.sh

รันวันที่ 1 ของทุกเดือน ตอนเที่ยงคืน

0 0 1 * * /home/user/monthly_clean.sh
“`

ตัวอย่างการใช้ Anacron (ผ่านไฟล์ /etc/anacrontab)

ถ้าคุณต้องการสร้างงานรายวันเอง ให้ไปที่ /etc/anacrontab และเพิ่มบรรทัดนี้:
“`text

period(วัน) delay(นาที) job-identifier command

1 5 daily_backup /home/user/backup.sh
“`
หมายเหตุ: เลข 5 หมายความว่าให้รอ 5 นาทีหลังจากเปิดเครื่องก่อนเริ่มรันงาน เพื่อไม่ให้เครื่องหน่วงตอนเปิดเครื่องใหม่ๆ


4. ข้อควรระวัง

  1. Environment Variables: cron ไม่ได้โหลดค่า Environment เหมือนกับที่คุณเปิด Terminal ปกติ ดังนั้นในสคริปต์ของคุณ ต้องระบุ Path แบบเต็มเสมอ เช่น /usr/bin/python3 แทนที่จะใช้ python3 หรือระบุ Path ของไฟล์ให้ชัดเจน (เช่น /home/user/script.sh แทนที่จะใช้ ./script.sh)
  2. สิทธิ์การเข้าถึง (Permission): อย่าลืมเปลี่ยนไฟล์สคริปต์ให้เป็นไฟล์ที่รันได้ (chmod +x script.sh)
  3. การจัดการ Output: งานที่รันโดย cron จะไม่มีหน้าจอให้คุณเห็น ถ้างานเกิด Error คุณจะไม่รู้เลย แนะนำให้เขียน Log ลงไฟล์เสมอ เช่น:

    0 3 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1

    (เป็นการเก็บทั้ง Output ปกติและ Error ไว้ในไฟล์ .log)
  4. อย่าตั้งเวลาซ้อนทับกัน: หากงานของคุณใช้ทรัพยากรสูง (เช่น สแกนไวรัสหรือบีบอัดข้อมูล) อย่าตั้งให้รันพร้อมกันหลายๆ งาน เพราะจะทำให้ระบบค้างได้
  5. การใช้ Anacron: อย่าลืมว่าถ้าคุณเอาไฟล์ไปวางใน /etc/cron.daily/ ไฟล์นั้น ต้องไม่มีจุด (.) ในชื่อไฟล์ (เช่น ห้ามตั้งชื่อว่า backup.sh ให้ตั้งว่า backup) มิฉะนั้น Debian/Ubuntu จะไม่รันไฟล์นั้นครับ

Outsource.Men รับพัฒนาเว็บไซต์ Shopify, Wordpress, Wix, ดูแลระบบ ERP, SaaS, Cloud, เขียนโปรแกรม Tradingview, Liquid, Google และดูแลระบบธุรกิจออนไลน์ โดยทีมผู้เชี่ยวชาญอิสระ

รับคำปรึกษาฟรี >>คลิกที่นี่<<

แชร์โพสต์นี้:

04

Sep

การสลับภาษาด้วย “~” Linux Mint 18.2 64 bit

Written by maliwan.s         สำหรับใครที่ในช่วงนี้เบื่อๆเซ็งๆระบบปฎิบัติการ Windows อยากลองอะไรใหม่ๆให้กับชีวิตบ้าง ใจก็อยากไป macOS แหละ ครั้นจะเอามาลงที่เครื่องเรา มันได้เหรอ(คิดในใจเบาๆ) ว่าแล้วก็หันไปซบอก OpenSource อย่าง linux ดีกว่า linux ก็จะประสบปัญหาการเปลี่ยนภาษาเหมือนตอนที่เราลง Windows ใหม่ๆ ต้องกด…

27

Jul

ไม่ง้ออินเตอร์เน็ต! ใช้ Ubuntu Linux Mint แบบ Offline ยังไงดี

ถ้าคุณต้องการดาวน์โหลดแพ็กเกจไว้ติดตั้งเองแบบ Offline (ไม่ต้องต่ออินเทอร์เน็ต) ขนาดพื้นที่ที่ต้องใช้จะขึ้นอยู่กับ วิธี ที่คุณเลือกใช้งานครับ โดยแบ่งออกเป็น 3 แนวทางหลักๆ ดังนี้: 1. โหลดเฉพาะแพ็กเกจที่ระบุและ dependencies (แนะนำที่สุด) วิธีนี้คือการเลือกดาวน์โหลดเฉพาะโปรแกรมที่คุณต้องการจริงๆ ควบคู่กับไฟล์เสริมที่จำเป็น (Dependencies) ไปติดตั้ง โดยไม่ต้องโหลดมาทั้งคลังระบบ 2. ทำคลังเฉพาะส่วน (Partial Mirror / Local…

19

Jul

เตรียมตัวให้พร้อม! Google อัปเดตเงื่อนไขใหม่ Android Backup เริ่มนับรวมพื้นที่เก็บข้อมูลแล้ว

Google ประกาศเปลี่ยนนโยบาย Android Backup ใหม่! ข้อมูลเครื่องเริ่มนับรวมในพื้นที่ Google Account แล้ว เช็กผลกระทบและวิธีตั้งค่าปิด-เปิดสำรองข้อมูลแอปที่นี่ก่อนเริ่มจริงใน 45 วัน